在另一个线程为什么叫个Console.WriteLine Console.ReadKey()块输出?

2019-08-18 14:28发布

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

static void Main(string[] args)
{
    DoAsync();
    Console.ReadKey();
}

这里DoAsync开始任务的设置并返回而不是等待任务的completition。 每个任务写入到控制台,但按键之前未显示ouptut。
当我使用Console.ReadLine一切工作正常。

所以我很好奇ReadKey() pecularities。

Answer 1:

从文档的Console.ReadKey()

该方法ReadKey等待,即,当按下线程发出ReadKey方法,直到一个字符或功能键上的块。

其实际作用是获取的锁Console.InternalSyncObject ,以防止在控制台上的进一步操作。

Console.ReadLine()方法不会阻止这样的线程。

阅读这篇文章 ,我猜你已经.NET 4.5安装?



文章来源: Why does Console.ReadKey() block output of Console.WriteLine called in another thread?