.net 为什么Console.ReadKey()会阻止在另一个线程中调用Console.WriteLine的输出?

.net 为什么Console.ReadKey()会阻止在另一个线程中调用Console.WriteLine的输出?,.net,multithreading,task-parallel-library,console-application,.net,Multithreading,Task Parallel Library,Console Application,我有一个非常简单的控制台应用程序 static void Main(string[] args) { DoAsync(); Console.ReadKey(); } 这里DoAsync启动一组任务并返回not waiting for tasks'Completion。 每个任务都会写入控制台,但在按下键之前不会显示ouptut。 当我使用Console.ReadLine时,一切正常 所以我对ReadKey()特殊性很好奇。来自forConsole.ReadKey(): Read

我有一个非常简单的控制台应用程序

static void Main(string[] args)
{
    DoAsync();
    Console.ReadKey();
}
这里
DoAsync
启动一组任务并返回not waiting for tasks'Completion。 每个任务都会写入控制台,但在按下键之前不会显示ouptut。
当我使用Console.ReadLine时,一切正常

所以我对
ReadKey()
特殊性很好奇。

来自for
Console.ReadKey()

ReadKey方法等待,即在发出 ReadKey方法,直到按下字符或功能键

它实际上是在
控制台.InternalSyncObject
上获取一个锁,这会阻止控制台上的进一步操作

Console.ReadLine()
方法不会以这种方式阻止线程


阅读我猜你已经安装了.NET 4.5了?

非常感谢,我正在寻找更高一级的()和文章。