线程【六】线程安全退出

问题1:

一般来说,要让你的线程能够尽快终止,必须在Execute方法中在较短的时间内不断地检查Terminated标志,以便能及时地退出。这是设计线程代码的一个很重要的原则!

在这种情况下使用上述思路一般不会出什么问题!

type
  TThread1 = class(TThread)
  private
    procedure Test();
  protected
    procedure Execute; override;
  end;

procedure TThread1.Execute;
var
  i:Integer;
begin
  FreeOnTerminate := True;//线程正常结束后自动释放线程资源
  For i:=0 to 1000 do
  begin
    if Terminated then break;//线程非正常结束时,遇到标识马上退出!
    Test()//线程内的业务处理函数
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if Assigned(t1) then t1.Terminate;//在窗体关闭时做关闭标识
end;
View Code
原文地址:https://www.cnblogs.com/key-ok/p/3358968.html