摘要:一些System.Threading.Task筆記
1) Task.Delay()這個是一個靜態方法,其功能有點像Thread.Sleep(),
但是Sleep()會鎖定其所在的執行緒,而Delay()需搭配await/async使用,所以只有在framework4.5以上才支援,且並不會鎖定執行緒。
使用方式為 await Task.Delay(1000);則就會等待1000ms後才會繼續往下執行。
2) Task.ContinueWith(),其功能有點像BackgroundWorker的Completed事件,
也就是在Task完成後,接續要執行的方法。
例:Task t會在10秒後,繼續呼叫以顯示Finish,這些都是在另一個執行緒執行的,所以會有跨執行緒的修改控件的問題。
Task t = new Task( () => { Thread.Sleep(10000);});
t.ContinueWidth(t0 => { MessageBos.Show("Finish");});
t.Start();
3) 在VS2012中,若出現的function說明有(可等候)時,就表示可使用await/async,承(2)的例子
Task t = new Task( () => { Thread.Sleep(10000);});
Task taskContinue = t.ContinueWidth(t0 => { MessageBox.Show("Finish");});
t.Start();
await taskContinue; //在此會等候到出現MessageBox後,才會繼續往下執行。
============ 以下是簽名檔 ============
一個小小螺絲釘。
第一次建立Blog,希望以後能慢慢充實它。
Howard