在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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章