1. 程式人生 > >執行緒的暫停與重新啟動

執行緒的暫停與重新啟動

呼叫Thread.Sleep使當前執行緒阻塞一段時間,休眠,直到呼叫Thread.Interrupt,另一個執行緒中斷或被Thread.Abrot終止。
注意:一個執行緒不能對另一個執行緒Sleep.
Thread.Suapend暫停一個執行緒,自身呼叫,該呼叫阻塞,直到該執行緒被另一個執行緒繼續為止。當另一個執行緒呼叫它,將會對該執行緒暫停。
Thread.Resume將使另一個執行緒跳出掛起狀態並繼續執行,而與呼叫SuSpend的次數無關。
例:
執行緒休眠5s:
Thread.Sleep(5000);
執行緒掛起:
Thread thread = new Thread(new ThreadStart(accp));
thread.Start();
...
thread.Suspend();
//執行緒重新開始:
....
thread.Resume();
執行緒的銷燬:
    執行緒要佔用大量的系統資源,完成特定使命後,必須適時銷燬。銷燬執行緒可用Thread
類的Abort方法或Interrupt方法。
    在呼叫Abort方法時,在指定執行緒上引發ThreadAbortException。以開始終止此執行緒的
過程。ThreadAbortException是—個可以由應用程式程式碼捕獲的特殊異常,但除非呼叫
ResetAbort,否則會在catch塊的結尾再次引發它。ResetAbod可以取消Abort的請求,並
阻止ThreadAbortException終止此執行緒。但是,執行緒不一定會立即中止,或者根本不中止。
如果執行緒在作為中止過程的一部分被呼叫的finally塊中做非常大量的計算,從而無限期延
遲中止操作,則會發生這種情況。若要確保執行緒已經終止,請在呼叫Abort之後對執行緒調
用Join方法。如果對尚未啟動的執行緒呼叫Abort,則當呼叫Start時該執行緒將中止。如果
對已掛起的執行緒呼叫Abort,則法執行緒將繼續,然後終止。如果對被阻塞或正在休眠的執行緒
呼叫Abort,則該執行緒被中斷,然後中止。