Questions tagged «taskcompletionsource»

11
什么时候应该使用TaskCompletionSource <T>?
AFAIK,它所知道的只是在某个时候,它的SetResult或SetException方法被调用以Task&lt;T&gt;通过其Task属性完成公开。 换句话说,它充当a Task&lt;TResult&gt;及其完成的生产者。 我在这里看到了示例: 如果我需要一种异步执行Func并有一个Task来表示该操作的方法。 public static Task&lt;T&gt; RunAsync&lt;T&gt;(Func&lt;T&gt; function) { if (function == null) throw new ArgumentNullException(“function”); var tcs = new TaskCompletionSource&lt;T&gt;(); ThreadPool.QueueUserWorkItem(_ =&gt; { try { T result = function(); tcs.SetResult(result); } catch(Exception exc) { tcs.SetException(exc); } }); return tcs.Task; } *如果我没有,可以使用Task.Factory.StartNew-但我确实有Task.Factory.StartNew。 题: 可有人请举例相关的情景解释直接到TaskCompletionSource 而不是一个假想中,我没有的情况 Task.Factory.StartNew?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.