4

我创建了一个线程,该线程可以暂停。那么,如何杀死或终止挂起的线程?

我尝试了ABORT该线程,但收到一条运行时错误消息,指出该线程已挂起并且无法中止。我一直在寻找终止方法或类似的方法,但它似乎不存在。

myThread := new Thread(@BigLoop);
myThread.Start;

myThread.Suspend;
myThread.Abort; <<<===exception is raised.

那么,你如何杀死或终止一个挂起的线程呢?

4

2 回答 2

1

在我恢复挂起的线程后,我能够中止线程;

myThread := new Thread(@BigLoop);
myThread.Start;

myThread.Suspend;


if MyThread.ThreadState = ThreadState.Suspended then
   myThread.Resume;

myThread.Abort; 
于 2012-12-21T17:04:08.960 回答
0

请注意,不建议使用 abort。更好的解决方案是使用等待句柄(autoresetevent/manualresetevent)来通知线程它应该停止运行。请记住,“中止”不适用于调用本机代码的任何内容,例如 com 或 pinvoke。

于 2012-12-22T11:50:38.857 回答