问题1、如何检测一个线程是否存在?若存在如何释放掉我在线程的execute中代码用
while not terminate do 
begin
  //freeOnTerminated := false; //加不加该句无关
end;如何释放?

解决方案 »

  1.   

    在线程的Execute事件里加上FreeOnTerminated := True;
      

  2.   

    FreeOnTerminated := True;释放的目标是对象
      

  3.   

    通常,若线程的execute中代码用
    while not terminate do 
    begin
       。。
    end;
    时,FreeOnTerminated=true 有时在同步方面存在问题
    我一般这么来  FreeOnTerminated:=false;
    结束时
      aaaa.Terminate;
      aaaa.WaitFor;   //保证线程执行完毕,已经退出了Execute过程
      aaaa.Free;
      

  4.   

    我在WIN2000系统下,在线程中用
    我在线程的execute中代码用
    while not terminate do 
    begin
      //freeOnTerminated := false; //该句未用
    end;
    在主程序中用
    FreeAndNil(rThread);
    线程可以终止,再重新创建该同名线程不会有问题,但在WINXP系统就不可以
    谁知道什么原因啊??