我有以下的扩展方法: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