正文
线程【五】VCL下的线程类
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
在这里把网友常常搞不清楚的属性作用列出来:
一、FreeOnTerminate
用于表明线程执行完毕后是自动释放还是保留,默认为False
二、Terminate
该过程只是简单地设置线程类的Terminated标志,并不是真正的释放,这一点要格外注意!
三、Synchronize
该函数是同步方法,如果线程中有操作UI的语句时,需要把UI操作写成过程(无参数过程),放到该方法中!
//这段代码是要用线程打印1-,输出至Memo1中
TThread1 = class(TThread)
private
FNum: Integer;
procedure AddLines;
protected
procedure Execute; override;
end;procedure TThread1.LinesAdd();
begin
Form1.mmo1.Lines.add(IntToStr(FNum));//把操作UI类写成一个过程,注意,该过程不能有参数,不过可以把参数写成线程类的成员变量
end;procedure TThread1.Execute;
var
i: Integer;
begin
FreeOnTerminate := True;
for i := to do
begin
if Terminated then break;
FNum:= i;
Synchronize(AddLines);//不能有参数
end;
end;