第一、基本使用
Thread,ThreadPool,Task的區別Task是.NET4.0加入的,跟線程池ThreadPool的功能類似,用Task開啟新任務時,會從線程池中調用線程,而Thread每次執行個體化都會建立一個新的線程。 如果是長時間的操作,請使用Task(Acton,TaskCreationOptions)建構函式中的TaskCreationOptions.LongRunning,暗示任務調度器,將這個線程放在非線程池上執行
第二、四種啟動方法
1)通過start啟動,new 一個Task,其中參數是一個Action
class Program { static void Main(string[] args) { Task t = new Task(DoA); t.Start(); Console.ReadKey(); } static void DoA() { for (int i = 0; i < 100; i++) { Console.WriteLine("i={0}\n", i); } } }
2)通過Run,直接運行,接受參數一個Action,返回對象是一個Task
static void Main(string[] args) { Task.Run(() => { for (int i = 0; i < 50; i++) { Console.WriteLine("i={0}",i); } }); Console.ReadKey(); }
3)帶返回參數的線程
Task<int> task = Task.Run<int>(() => { int sum = 0; for (int i = 0; i < 50; i++) { sum += 1; } return sum; }); int result = task.Result; Console.WriteLine("運算結果是:{0}",result);//輸出50 Console.ReadKey();
4)通過Task.Factory
Task t = Task.Factory.StartNew(() => { for (int i = 0; i < 10; i++) { Console.WriteLine("i={0}", i); } });