.Net 4クラスSystem.Threading.Tasksを使用して、いくつかの動作を検出しました。これは、この例で示すのが最善です:タスクレポートは完了しましたが、結果のブロックはまだありますか?
var t = FunctionThatReturnsTaskAsync();
Trace.TraceInformation("Completed: " + t.IsCompleted);
return t.Result;
出力:「が完了:真を」、しかし永遠t.Resultでブロック後、(かつて数千回のランで)コード。それは例外を返すかスローしません。どうすればいいの!
返されるタスクは完了するまでに数回かかるため、2行目で完了できることは驚くことではありません。謎はなぜt.Resultがブロックされているのかです。
この関数はどのように実装されていますか? – CodesInChaos
FunctionThatReturnsTaskAsync?それは、タスク.Factory.StartNew(()=> {}、CancellationToken.None)を呼び出して終了します。 –
4ZM
Strange。問題を示す最小の例を投稿できますか? – CodesInChaos