大悟还俗

邮箱 key_ok@qq.com 我的收集 http://pan.baidu.com/share/home?uk=1177427271
posts - 236, comments - 8, trackbacks - 0, articles - 0
  新随笔  :: 联系 :: 订阅 订阅  :: 管理

线程【六】线程安全退出

Posted on 2013-10-09 12:28 大悟还俗 阅读(...) 评论(...) 编辑 收藏

问题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