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

ptr*_*x01 3 c# console-application

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

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

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

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

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

Han*_*ant 5

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

while (!Done)
{
    while (Console.KeyAvailable) Console.ReadKey(true);
    ConsoleKeyInfo key = Console.ReadKey(true);
    // etc..
}
Run Code Online (Sandbox Code Playgroud)