使用以下代码启动一个新的控制台应用程序 -
class Program
{
static void Main(string[] args)
{
while (true)
{
Task<string> readLineTask = Console.In.ReadLineAsync();
Debug.WriteLine("hi");
}
}
}
Console.In.ReadLineAsync 是阻塞的,直到在控制台中输入一行才会返回。所以“嗨”永远不会被写入控制台。
在 Console.In.ReadLineAsync 上使用 await 也会阻塞。
据我了解,新的异步 CTP 方法不会阻塞。
这是什么原因?
这是另一个例子
static void Main(string[] args)
{
Task delayTask = Task.Delay(50000);
Debug.WriteLine("hi");
}
这正如我预期的那样,它直接进入下一行并打印“hi”,因为 Task.Delay 不会阻塞。