2012-12-21 111 views
4

我创建的线程和该线程可以被暂停。那么,我该如何杀死或终止暂停的线程呢?暂停的线程可以中止吗?

我试图ABORT线程,我得到一个运行时错误消息说,线程被挂起,它不能被中止。我看了终止方法或类似的东西,它似乎并不存在。

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

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

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

+4

恢复它首先 – kludg

+0

@Serg,它的工作....感谢 – ThN

回答

1

我恢复暂停的线程之后,我才得以中止线程;

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

myThread.Suspend; 


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

myThread.Abort; 
0

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

+1

CK。这是真的,但如果你正试图在你的程序关闭中放弃一个线程会怎么样。那有关系吗? – ThN