タグ付けされた質問 「taskcompletionsource」

11
TaskCompletionSource <T>はいつ使用する必要がありますか?
私の知る限り、知っているのは、ある時点で、そのSetResultまたはSetExceptionメソッドが呼び出さTask&lt;T&gt;れて、そのTaskプロパティを介して公開を完了することです。 言い換えれば、それはa Task&lt;TResult&gt;とその完成のプロデューサーとして機能します。 私はここに例を見ました: Funcを非同期で実行する方法が必要で、その操作を表すタスクがある場合。 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?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.