在C#中怎樣推斷線程當前所處的狀態
老帥
在C#中。線程對象Thread使用ThreadState屬性指示線程狀態。它
是帶Flags特性的枚舉類型對象。
ThreadState 為線程定義了一組全部可能的執行狀態。一旦線程被創建。它就至少處於當中一個狀態中。直到終止。
在公共語言執行時中創建的線程最初處於Unstarted狀態中。而進入執行時的外部線程則已經處於Running狀態中。
通過調用 Start能夠將Unstarted線程轉換為Running狀態。並不是全部的ThreadState值的組合都是有效的;比如,線程不能同一時候處於Aborted和Unstarted狀態中。
因此推斷線程當前的狀態必須用bitmask按位運算來達到推斷目的,不能直接使用相等來推斷。
定義ThreadState例如以下:
1.推斷線程是否處於取消狀態
A.錯誤的推斷
(MyThread.ThreadState == ThreadState.AbortRequested)
B.正確的推斷
(MyThread.ThreadState & ThreadState.AbortRequested) != 0
2.推斷線程是否處於執行狀態
這個有一點特殊。由於ThreadState.Running本身等於0。不能用&運算,所以推斷可用下面方法:
(MyThread.ThreadState == ThreadState.Running)
