【发布时间】:2013-02-06 08:28:44
【问题描述】:
使用以下代码启动一个新的控制台应用程序 -
class Program
{
static void Main(string[] args)
{
while (true)
{
Task<string> readLineTask = Console.In.ReadLineAsync();
Debug.WriteLine("hi");
}
}
}
Console.In.ReadLineAsync 处于阻塞状态,直到在控制台中输入一行后才会返回。因此“Hi”永远不会被写入控制台。
在 Console.In.ReadLineAsync 上使用 await 也会阻塞。
据我了解,新的异步 CTP 方法不会阻塞。
这是什么原因?
这是另一个例子
static void Main(string[] args)
{
Task delayTask = Task.Delay(50000);
Debug.WriteLine("hi");
}
这符合我的预期,它直接进入下一行并打印“hi”,因为 Task.Delay 没有阻塞。
【问题讨论】:
标签: c# async-await