线程【五】VCL下的线程类

在这里把网友常常搞不清楚的属性作用列出来:

一、FreeOnTerminate
用于表明线程执行完毕后是自动释放还是保留,默认为False

二、Terminate

该过程只是简单地设置线程类的Terminated标志,并不是真正的释放,这一点要格外注意

三、Synchronize

该函数是同步方法,如果线程中有操作UI的语句时,需要把UI操作写成过程(无参数过程),放到该方法中!

 

 

//这段代码是要用线程打印1-99,输出至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 := 0 to 99 do

  begin

    if Terminated then break;

    FNum:= i;

    Synchronize(AddLines);//不能有参数

  end;

end;
View Code

 

你可能感兴趣的:(线程)