這次要學習 TPL 了. (Task Parallel Library)。當然,還是從最簡單的開始學起。
範例1
static void Main(string[] args) { Task.Factory.StartNew(() => { int sum = 0; for (int i = 0; i < 100; i++) sum += i; Console.WriteLine("總和為{0}",sum); }); Console.WriteLine("完成"); Console.ReadLine(); }
執行結果
這是最簡單的範例了。
Task.Factory.StartNew 起始一個新的 Task 並且開始執行。在大括弧內的為 Task 要執行的程式內容。由於 該 Task 尚未執行完畢,主程式就執行了 Console.WriteLine(“完成”) 故先輸出完成。我們尚未按Enter 時Task 就執行完了,故再輸出 總和為4950。
範例2
這個範例的目的同上一個,只是這次我們想要自行決定 task 何時開始執行。
static void Main(string[] args) { Task task1 = new Task(() => { int sum = 0; for (int i = 0; i < 100; i++) sum += i; Console.WriteLine("總和為{0}", sum); }); task1.Start(); Console.WriteLine("完成"); Console.ReadLine(); }
範例3
上述的範例都是在 task 內輸出結果。這次我們想要由 task 內得到結果,但在主程式內輸出。
static void Main(string[] args) { Task<int> task1 = new Task<int>(() => { int sum = 0; for (int i = 0; i < 100; i++) sum += i; return sum; }); task1.Start(); Console.WriteLine("總和為{0}", task1.Result); Console.ReadLine(); }Task<int> 的<int> 代表回傳值的型別,其結果由 Task.Result 來讀取。
沒有留言:
張貼留言