暂停的线程可以中止吗?

时间:2012-12-21 16:50:22

标签: multithreading delphi-prism oxygene

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

我尝试ABORT线程,我收到一条运行时错误消息,指出该线程已暂停且无法中止。我已经找了终止方法或类似的东西,它似乎不存在。

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

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

那么,你如何杀死或终止暂停的线程?

2 个答案:

答案 0 :(得分:1)

在我恢复暂停的线程后,我能够中止线程;

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

myThread.Suspend;


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

myThread.Abort; 

答案 1 :(得分:0)

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