1.有没有办法知道线程的运行状态,是销毁了还是在运行?
2.线程销毁代码怎么写?  
tlist[index].Free;
  tlist[index].Destroy;这里运行到Destroy就报错了。3.在线程类里设置了FreeOnTerminate:=true;是不是就不需要手工销毁了。希望详细一点,多谢。

解决方案 »

  1.   

    1,判断 tlist[i] = nil
    2,不可能直接free或destroy吧。
    3,FreeOnTerminate:=true,线程结束后,会自动释放
      

  2.   


    tlist[i] = nil不行啊。
    不可能直接free或destroy吧。那要怎么做?
      

  3.   

    1.有没有办法知道线程的运行状态,是销毁了还是在运行?
    tList[index].Terminate;//终止线程
    tList[index].WaitFor; //处理线程结束
    tlist[index].Free;   //销毁实例
    tlist[index] := nil; //销毁指针这里运行到Destroy就报错了。
    free了就不能destroy了,看看free的源码。3.在线程类里设置了FreeOnTerminate:=true;是不是就不需要手工销毁了。
    答:是的希望详细一点,多谢。
      

  4.   


    你好,答的很好,看来不错。我还想问下。线程的MyThread.OnTerminate的事件处理程序要怎么写。
    procedure ThreadCleanUp(i:integer);
    ...
    MyThread.OnTerminate:=ThreadCleanUp(page.PageIndex);这样不行啊。要怎么写自己的clean-up代码。我是把所有运行的线程都放在tlist的数组中,参数i是必须的,不然没法知道是对哪个线程进行清除了。