一、關於前臺線程和後臺線程
1、簡介
CLR中線程分爲兩種類型,一種是前臺線程、另一種是後臺線程.
前臺線程:應用程序的主線程、Thread構造的線程都默認爲前臺線程
後臺線程:線程池線程都爲後臺線程
2、區別
前臺線程:前臺線程一般執行重要性很高的任務,至於什麼是重要性很高,這個需要結合業務綜合考慮,哪些操作是當前應用程序必須執行的.
後臺線程:這裏需要注意,當一個進程的所有前臺線程關閉時,也就是當應用程序推出的時候,無論後臺線程有沒有執行完它的任務,它都會被強制關閉.但是,當應用程序開啓時,它又會重新啓動.後臺線程一般執行不重要、耗時很短的任務,就算進程(應用程序)關閉了,導致它強制關閉,也不會造成影響的任務.比如系統清理程序等.
注意:一般進程會在所有的前臺線程執行完畢時關閉.
3、代碼演示區別
前臺線程:
static void Main(string[] args) { var thread = new Thread(DoWork); thread.Start(); } private static void DoWork() { Thread.Sleep(2000); Console.WriteLine("子線程處理完工作,已結束"); }
子線程停留兩秒後,控制檯消失.
後臺線程:
static void Main(string[] args) { var thread = new Thread(DoWork); thread.IsBackground = true; thread.Start(); } private static void DoWork() { Thread.Sleep(2000); Console.WriteLine("子線程處理完工作,已結束"); }
控制檯不等子線程處理完,直接消失.
效果很直觀,前臺線程會執行完才結束進程,但是後臺線程則不會.