怎么安全关闭线程,我在
TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
if assigned(RecvThread) then RecvThread.Free;
  if assigned(RecvThread2) then RecvThread2.Free;
  if assigned(RecvThread3) then RecvThread3.Free;
  if assigned(RecvThread4) then RecvThread4.Free;
  if assigned(RecvThread5) then RecvThread5.Free;
  if assigned(GetThread) then GetThread.Terminate;
  if assigned(GetThread2) then GetThread2.Terminate;
  if assigned(SendThread) then SendSThread.Terminate;
  if assigned(SendThread2) then SendThread2.Terminate;
  if assigned(SendThread3) then SendThread3.Terminate;
这里释放线程,抱线程句柄无效,怎么才能关闭这些线程,让应用正常退出。

解决方案 »

  1.   

    在其Create或Execute设FreeOnTerminate := True;就可以
      

  2.   

    主进程强行中止线程:   TerminateThread(YouThread.Handle,0); 无论线程中是否有try..finally块,这个函数会使线程立即停止执行。这意味
    着被线程打开的文件可能没被关闭或申请的内存没被释放。
    主进程请求中止线程
      
       YouThread.Terminate //结果将线程属性Terminated置true在线程的EXECUTE方法中:随时查看属性Terminated,若为true,立即中止EXECUTE线程创建CREATE方法中:
    属性FreeOnTerminate=true
    线程执行完EXECUTE后,线程对象将被自动删除,并释放所占用的资源。