共用方式為


執行緒狀態

更新:2007 年 11 月

ThreadState 屬性會提供執行緒狀態的資訊。由於執行緒在任何指定時間內可以處於一種以上的狀態,因此儲存在 ThreadState 中的值可以是 ThreadState 列舉型別中多個值的組合。例如,如果在呼叫 Wait 時執行緒遭到封鎖,而且另一個執行緒在該相同執行緒上呼叫 Abort 方法,則執行緒會同時處於 WaitSleepJoinAbortRequested 狀態。

變更執行緒狀態

一旦執行緒已啟動,您可以呼叫其方法來變更它的狀態。例如,您可以呼叫 Thread.Sleep,使執行緒暫停固定的毫秒數。Sleep 方法會將參數看作逾時,這是執行緒仍遭到封鎖的毫秒數。

利用引數 Infinite 呼叫 Sleep 會導致執行緒進入休眠狀態,直到另一個呼叫 Interrupt 的執行緒岔斷它為止。Interrupt 方法會使目的執行緒從任何可能處在的等候狀態中甦醒,並且引發例外狀況。

您也可以呼叫 Suspend 以暫停執行緒。當執行緒本身呼叫 Suspend 時,呼叫會遭到封鎖,直到另一個執行緒藉由呼叫 Resume 讓它繼續為止。當執行緒在另一個執行緒上呼叫 Suspend 時,呼叫為未封鎖的呼叫並且會導致其他執行緒暫停。呼叫 Resume 會中斷另一個執行緒的暫停狀態,並讓它繼續執行。不像 SleepSuspend 並不會立即停止執行緒。暫停的執行緒會等到 Common Language Runtime 判斷它已達到安全點時才會暫停。

Abort 方法會經由引發會導致執行緒終止的 ThreadAbortException 例外狀況,停止執行中的執行緒。

如需這些方法的詳細資訊,請參閱 Thread

請參閱

概念

多執行緒應用程式

執行緒同步處理

多執行緒程序的參數和傳回值

在表單和控制項使用多執行緒

委派和 AddressOf 運算子

參考

System.Threading

SyncLock 陳述式

其他資源

元件中的多執行緒