Отключение ввода в консоли C # до завершения определенной задачи

Я работаю над небольшой частью своей программы, обрабатывая входные данные, в основном у меня есть этот маленький код:

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.. } 

Вы не можете блокировать ввод, даже если вы его не обрабатываете, он переходит в буфер клавиатуры.

Однако вы можете просто остановить их из буфера.

  • Как написать быстрый цветной вывод на консоль?
  • .NET Console TextWriter, который понимает Отступ / Неподвижный / IndentLevel
  • Owin Self host & ASP .Net MVC
  • Как исправить «Нет перегрузки для метода» принимает 0 аргументов »?
  • Как открыть окно консоли
  • Невозможно указать модификатор «async» в методе «Основной» консольного приложения
  • Почему закрытие windows консоли сразу после отображения моего вывода?
  • как запустить winform из консольного приложения?
  • Консольное приложение .NET как служба Windows
  • Какова команда выхода из приложения Console на C #?
  • Давайте будем гением компьютера.