C# 執行緒 和 任務
阿新 • • 發佈:2020-08-12
一:執行緒
建立執行緒有兩種方式
1.不帶引數建立執行緒
var thread1 = new Thread(ThreadTest1) public static void ThreadTest1() { // 業務程式碼 } thread1.start();
2.帶引數建立執行緒
var thread2 = new Thread(ThreadTest2); public static void ThreadTest2(object obj) { //業務程式碼 } thread2.Start(obj);
總結:均沒有返回值。主執行緒結束子執行緒未必結束,子執行緒出現問題未必能發現,並處於假死狀態。
二:任務
建立任務有三種方式
1.通過建構函式建立(此方法需要手動開始任務)
var task1 = new Task(() => { }); var task2 = new Task<int>(()=> { return 0; });
task1.Start();
task2.Start();
2.使用任務工廠
var task1 = Task.Factory.StartNew(() => { }); var task2 = Task.Factory.StartNew(() => { return 0; });
3.Task.Run建立
var task1 = Task.Run(() => { }); var task2 = Task.Run(() => { return 0; });
總結:任務的執行不會阻塞主執行緒。主執行緒結束後,任務一定也會結束。任務和主執行緒關聯大,任務出現問題時主執行緒也會崩潰告知人。