在特定任务完成之前,在C#Console中禁用输入

我正在处理我的程序的一小部分,处理输入,基本上我有这个小代码:

bool Done = false; while (!Done) { ConsoleKeyInfo key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter) { //Action } } 

这个问题的主要问题是代码甚至会在动作之间处理ReadKey。

因此,如果你有一个菜单,你可以按键然后它会说“你按下:x”,如果你按下任何按钮,而它显示你的消息, ReadKey已经获得了这个新的密钥。

所以我想阻止任何进一步的输入,直到用户再次看到菜单。

不太确定这是否有意义,个人我喜欢它,当击键不消失,我可以提前输入。 但你可以像这样刷新键盘缓冲区:

 while (!Done) { while (Console.KeyAvailable) Console.ReadKey(true); ConsoleKeyInfo key = Console.ReadKey(true); // etc.. } 

你不能阻止输入,即使你不处理它,它也会进入键盘缓冲区。

你可以简单地停止将它们从缓冲区中取出。