我有一个非常简单的控制台应用程序。
static void Main(string[] args)
{
DoAsync();
Console.ReadKey();
}
在这里,
DoAsync
启动了一组任务,并在不等待任务完成的情况下返回。每个任务都写入控制台,但在按下键之前不会显示输出。当我使用
Console.ReadLine
时,一切正常。所以我很好奇ReadKey()
的特殊性。我有一个非常简单的控制台应用程序。
static void Main(string[] args)
{
DoAsync();
Console.ReadKey();
}
DoAsync
启动了一组任务,并在不等待任务完成的情况下返回。每个任务都写入控制台,但在按下键之前不会显示输出。Console.ReadLine
时,一切正常。所以我很好奇ReadKey()
的特殊性。根据 Console.ReadKey() 的文档:
ReadKey 方法等待,也就是阻塞发出 ReadKey 方法的线程,直到按下字符或功能键。
实际上它会在 Console.InternalSyncObject
上获取锁,以防止进一步在控制台上进行操作。
而 Console.ReadLine()
方法不会以这种方式阻塞线程。
阅读这篇文章,我猜测您已安装了 .NET 4.5?