【问题标题】:Why does Console.ReadKey() block output of Console.WriteLine called in another thread?为什么 Console.ReadKey() 会阻止在另一个线程中调用 Console.WriteLine 的输出?
【发布时间】:2013-03-22 13:02:45
【问题描述】:

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

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

这里DoAsync 启动一组任务并返回不等待任务完成。 每个任务都会写入控制台,但在按下键之前不会显示输出。
当我使用Console.ReadLine 时,一切正常。

所以我对ReadKey() 的特点很好奇。

【问题讨论】:

    标签: .net multithreading task-parallel-library console-application


    【解决方案1】:

    来自the documentationConsole.ReadKey()

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

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

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

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

    【讨论】:

    猜你喜欢
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多