我正在构建一个 .NET 4.0 控制台应用程序,该应用程序不断(即通常每隔几秒钟)向控制台输出信息。这是一个多线程应用程序,不同的线程在不同的时间写入控制台。
问题是我想在这一切发生时接受用户输入。用户输入可以随时发生。
我尝试了两种不同的方法,但都不是很好。
我尝试使用单独的线程通过查找来阅读
Console.KeyAvailable
。这“有效”但确实令人困惑,因为在您尝试输入时正在将字符串写入输出。这使光标在打字时四处移动并且迷失方向。我尝试使用
Console.SetCursorPosition
将控制台分成两个“窗格”。上输出,下输入。Console.Clear()
这也有效,但我每次绘制屏幕后都必须打电话。这非常慢,并导致疯狂的屏幕闪烁。
似乎我唯一的其他选择是编写一个 Windows 窗体应用程序或 WPF 应用程序来模拟控制台。这似乎很荒谬,因为我唯一想做的就是接受自发的用户输入。
我的 google-fu 没有找到任何有效的控制台替代品或任何构建了模拟控制台的 .NET 应用程序的人......
我被困在这里了吗?