C#多執行緒個人總結
阿新 • • 發佈:2018-12-17
執行緒基礎使用
建立一個控制檯程式,利用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 子執行緒執行完,主程式才能關閉。