这可能是一个非常基本的问题,但只是我想确保自己在脑海中有一席之地。 今天我正在用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