1. 程式人生 > 實用技巧 >C# 執行緒 和 任務

C# 執行緒 和 任務

一:執行緒

  建立執行緒有兩種方式  

   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;
});

總結:任務的執行不會阻塞主執行緒。主執行緒結束後,任務一定也會結束。任務和主執行緒關聯大,任務出現問題時主執行緒也會崩潰告知人。