一些System.Threading.Task筆記

  • 1193
  • 0

摘要:一些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