我有以下的擴展方法:C#.NET 4.5的異步等待Task.Wait()阻塞問題
internal static string ReadLine(this DataReader stream)
{
Task<string> line = ReadLineAsync(stream);
// line.Wait(); - Not Required, as next call blocks
return line.Result;
}
它基本上是返回一個字符串的異步方法調用同步方法調用包裝。如果我一行一行地執行代碼,代碼工作正常,但是如果我讓它自由執行,我會遇到一個無限期的代碼塊。有任何想法嗎?
相關上一個問題我貼:How can I update my API to use the async keyword without using await for all callers
你究竟得到了什麼?順便說一句,你不需要呼叫line.Wait,呼叫line.Result是一個阻止呼叫,如果結果不可用 – MBen
我改變了我的方法考慮到你的意見。該應用程序只是掛起,我沒有看到我的輸出或VS 2012中的本地窗口中的任何東西。 – c0D3l0g1c
你是從UI線程運行這個嗎? – dtb