从果壳中的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
感谢。