1、線程狀態ThreadState
在C#中,線程對象Thread使用ThreadState屬性指示線程狀態,它是帶Flags特性的枚舉類型對象。
ThreadState 為線程定義了一組所有可能的執行狀態。一旦線程被創建,它就至少處於其中一個狀態中,直到終止。在公共語言運行時中創建的線程最初處於Unstarted狀態中,而進入運行時的外部線程則已經處於Running狀態中。通過調用 Start可以將Unstarted線程轉換為Running狀態。並非所有的 ThreadState值的組合都是有效的;例如,線程不能同時處於Aborted和Unstarted狀態中。
因此判斷線程當前的狀態必須用bitmask按位運算來達到判斷目的,不能直接使用相等來判斷。
2、C#中ThreadState中定義如下:
3、如何判斷當前線程狀態
1)判斷線程是否處於取消狀態
(MyThread.ThreadState & ThreadState.AbortRequested) != 0
2)判斷線程是否處於運行狀態
這個有一點特殊,因為ThreadState.Running本身等於0,不能用&運算,所以判斷可用以下方法:
(MyThread.ThreadState == ThreadState.Running)
4、.Net 中如何啟動線程
.net下的線程,是通過設置委托對象來初始化,啟動的。
委托是一個繼承自多播委托的類型,委托對象可以賦值的方式指向一個或多個方法。
1 public void Test() 2 { 3 Thread thread = new Thread(new ThreadStart(ThreadMethod)); 4 thread.Start();//開辟一個線程,執行方法 5 }
推薦:http://zhoufoxcn.blog.51cto.com/792419/187031/ 這篇文章主要講的是使用委托啟動線程(帶參、無參啟動以及優劣比較)。
本文僅做為筆記使用,若需轉載,請轉載文章原文!