定义了一个 aThread: MyThread; 但线程执行完 aThread 并不是nil 而且仍然可以访问该线程的属性if aThread <> nil then
if aThread.Suspended then  // 这一句还可以被执行

解决方案 »

  1.   

    先挂起创建线程,在Create方法中设置FreeOnTerminate,当线程执行完毕,要等待一段时间的,Sleep下
      

  2.   

    建议自己手动终止线程,  Thread.Terminate;
      if Thread.Suspended then
         Thread.Resume;
      Thread.WaitFor;
      Thread.Free;
      

  3.   

    FreeOnTerminate并不会对线程其强制释放的作用,它表明线程在可能的时候会结束
    ExitThread它可以强制关闭线程
      

  4.   

    在Create已经方法中设置FreeOnTerminate := trueaThread.OnTerminate := ThreadDone; 
    aThread.Resume;是不是还要在ThreadDone设置aThread :=nil  ??