IsAlive的功能就是判斷當前線程是否處於活動狀態。
public class Program { public static void Main(string[] args) { try { WriteNumber writenumber = new WriteNumber(); Thread t1 = new Thread(new ThreadStart(writenumber.WriteString)); Console.WriteLine("begin:" + t1.IsAlive); t1.Name = "000"; t1.Start(); Console.WriteLine("end:" + t1.IsAlive); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } public class WriteNumber { /// <summary> /// 類方法 /// </summary> public void WriteString() { Console.WriteLine("WriteString:" + Thread.CurrentThread.IsAlive); } }
輸出結果:
結論:線程處於正在運行或准備開始運行的狀態,線程就是處於活動狀態的。 在沒有調用Start時, 線程只作了定義, 還是處於沒活動的狀態。
最后值得討論的是end這段代碼的線程活動狀態,雖然上面打印出來是True, 但此值是不確定的, 有可能這次運行時, t1線程還沒執行完畢, 如果在這句代碼前加Thread.Sleep(1000), 讓main線程執行, 一秒鍾后t1線程早已經執行完畢好久, 這時end這段代碼輸出為False。