這可能是一個非常基本的問題,但只是我想確保自己在腦海中有一席之地。 今天我正在用TPL庫進行挖掘,發現有兩種創建Task類實例的方法。任務類的實例(Task.Factory.StartNew或TaskCompletionSource)
辦法,我
Task<int> t1 = Task.Factory.StartNew(() =>
{
//Some code
return 100;
});
路II
TaskCompletionSource<int> task = new TaskCompletionSource<int>();
Task t2 = task.Task;
task.SetResult(100);
現在,我只是想知道,
- 是否有這些實例之間有什麼區別?
- 如果是,那麼是什麼?
要添加更多的細節,TaskCompletionSource是一種包裝異步操作的方式,否則當前不支持TaskFactory.FromAsync之類的操作。 TaskCompletionSource的一個示例用法是包裝基於事件的異步模式實現,如WebClient.DownloadStringAsync。有關更多示例,請參閱http://msdn.microsoft.com/en-us/magazine/ff959203.aspx – 2012-07-22 16:07:02