没脾气2x:
如果是 .NET 托管线程的话,在给线程 Abort() 的时候会在线程中引发 ThreadAbortException 异常
[阅读: 832] 2005-01-12 12:46:37
这样的话,在线程中既可捕获这个异常,又可进行 finally。
但是在 VC、Delphi 等中,强制终止线程是否会进入 finally 还是个问题呢(我感觉应该不是,不过你开始说写 finally 就解决了,我以为也会进入 finally 呢)
我建议你在线程的处理中加上一个是否结束状态标志做处理。想停止该线程时改变这个标志,然后等待线程正常退出。
Delphi 的 TThread 类,在 Terminate 之后,会改变 Terminated: Boolean 为真。线程中判断这个值,如果为真就该做退出的处理了。在线程外对线程实体使用 WaitFor 等待线程真正结束。