1. 程式人生 > >C#多執行緒個人總結

C#多執行緒個人總結

執行緒基礎使用

建立一個控制檯程式,利用ThreadStart委託建立一個執行緒:

        using System.Threading;
        public static void CallToChildThread()
        {
            Console.WriteLine("子執行緒1");
        }

        static void Main(string[] args)
        {
            Console.WriteLine("建立一個執行緒");
            Thread childThread = new Thread(new ThreadStart(CallToChildThread));
            childThread.Start();
            Console.ReadLine();
        }

        public static void CallToChildThread(object value)
        {
            Console.WriteLine(value);
        }

        static void Main(string[] args)
        {
            Console.WriteLine("建立一個執行緒");
            Thread childThread = new Thread(new ParameterizedThreadStart(CallToChildThread));
            childThread.Start("hzkzb");
            Console.ReadLine();
        }

注意一點,方法接受的引數型別必須為object,否側會報錯。

前臺執行緒與後臺執行緒

前臺執行緒:所有前臺執行緒執行完畢後,應用程式才能關閉;

後臺執行緒:哪怕後臺執行緒正在執行,應用程式也能強行關閉。

用IsBackground屬性設定執行緒是否後臺執行緒,預設是flase。

建立一個控制檯程式

        public static void CallToChildThread()
        {
            Console.WriteLine("子執行緒1");
            Thread.Sleep(5000);//使執行緒暫停五秒
            Console.WriteLine("子執行緒2");
        }

        static void Main(string[] args)
        {
            Console.WriteLine("建立一個執行緒");
            Thread childThread = new Thread(CallToChildThread);
            childThread.Start();
            childThread.IsBackground = true;
        }

當childThread.IsBackground = true;的時候,主程式在childThread 子執行緒還沒執行完就立刻關閉了程式,由於是個控制檯程式所以一閃而過,此時childThread 是個後臺執行緒。

把childThread.IsBackground = true;註釋掉,此時childThread 是個前臺執行緒,這個時候childThread 子執行緒執行完,主程式才能關閉。