在这里使用`TaskCompletionSource`的目的是什么?

时间:2017-10-22 14:43:59

标签: c# multithreading concurrency task

从果壳中的C#

  

以下示例在等待五秒后打印42:

var tcs = new TaskCompletionSource<int>();
new Thread (() => { Thread.Sleep (5000); tcs.SetResult (42); })
  { IsBackground = true }
  .Start();
Task<int> task = tcs.Task;         // Our "slave" task.
Console.WriteLine (task.Result);   // 42

在这里使用TaskCompletionSource的目的是什么?

可以在没有TaskCompletionSource的情况下等效地重写吗?

例如,它是否等同于以下内容?如果不是,它们之间有什么区别?

Task<int> task = Task.Run (() => { Thread.Sleep (5000); return 42; });
Console.WriteLine (task.Result);   // 42

感谢。

0 个答案:

没有答案