2012-12-21 109 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