1. 程式人生 > >C# 多執行緒學習系列二

C# 多執行緒學習系列二

一、關於前臺執行緒和後臺執行緒

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("子執行緒處理完工作,已結束"); }

控制檯不等子執行緒處理完,直接消失.

效果很直觀,前臺執行緒會執行完才結束程序,但是後臺執行緒則不會.