constructor TDeliverThread.Create(CreateSuspended: Boolean; AReceiveShortMessage :TReceiveShortMessage;AADOConnStr:String);x
begin
ReceiveShortMessage := AReceiveShortMessage;
self.ADOConnStr := AADOConnStr;
inherited Create( CreateSuspended );
end;
上面这段代码是什么意思?
最最主要的是
inherited Create( CreateSuspended );
这一行,看了Create后,还是不能理解
请各位教我下!
begin
ReceiveShortMessage := AReceiveShortMessage;
self.ADOConnStr := AADOConnStr;
inherited Create( CreateSuspended );
end;
上面这段代码是什么意思?
最最主要的是
inherited Create( CreateSuspended );
这一行,看了Create后,还是不能理解
请各位教我下!
如:
unit1
....
.....
public
constructor create (delayms:cardinal; bar :tprogressbar);.....constructor Twaitthread.create(delayms:cardinal; bar :tprogressbar);
begin
inherited create(true);
freeonterminate:=true;//设置线程运行
fdelayms:=delayms;
Fbar:=bar;
end;
CreateSuspended指线程创建时是否挂起:
CreateSuspended = true 表示线程挂起,不立即执行,这时可以设置一下线程属性,然后需调用.Resume唤醒线程,执行;
CreateSuspended = false 表示线程立即执行,之后也可调用.Suspend暂停线程参考delphi help >> TThread
显然这个线程的构造函数是用于传进来ReceiveShortMessage 和ADOConnStr两个参数
以便在此线程内部使用.而第一个参数是为了同父类的创建挂起功能.
begin
ReceiveShortMessage := AReceiveShortMessage; //委托线程处理的消息、事件对象
self.ADOConnStr := AADOConnStr; //AdoConnection连接串属性赋值
//调用基类的Create函数,线程创建之后,由CreateSuspended参数决定是否挂起
inherited Create( CreateSuspended );
end;
inherited Create( CreateSuspended );
这一行,CreateSuspended为true会产生什么情况,为FALSE又会产生什么情况.
它只有一个Boolean类型的参数,当为true时创建线程后,线程不会立即执行(即挂起),需要调用Resume方法才会执行
线程函数的代码,而在TThread类里线程函数是调用了TThread.Execute;这个纯虚函数.所以你创建的线程要重载这个函数,
这样线程就执行了你的Execute里面的代码.
而当Create的参数为false后,线程就立即开始执行了。不需要再调用Resume方法。
TThread就是利用Execute这个纯虚函数,加上synchronize的同步(把synchronize方法内的过程放到主线程里执行,具体机制参见源代码classes单元及Forms单元的TApplication类)来实现对线程的封装
与之相反,false的情况下,线程一旦被创建,就立刻开始run.不知道说清楚没有.