我已經使用.net 4類System.Threading.Tasks遇到了一些strage行爲。這是最好的這個例子證明:任務報告IsCompleted,但仍然阻止結果?
var t = FunctionThatReturnsTaskAsync();
Trace.TraceInformation("Completed: " + t.IsCompleted);
return t.Result;
輸出:「完成:真」,但代碼(曾經在幾千運行),然後在t.Result塊永遠。它既不返回也不拋出異常。怎麼會這樣!
任務返回的是一些時間快速完成所以一點也不奇怪,它可以在第二行中完成。神祕的是爲什麼t.Result被阻止。
這怎麼設定? – CodesInChaos 2012-02-16 10:00:29
FunctionThatReturnsTaskAsync?它最終調用任務.Factory.StartNew(()=> {},CancellationToken.None)。 –
4ZM
2012-02-16 11:21:36
奇怪。你能發佈一個展示問題的最小例子嗎? – CodesInChaos 2012-02-16 11:28:31