Отключение ввода в консоли 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 как служба Windows
  • Установка позиции курсора в консольном приложении Win32
  • Слушайте нажатие клавиши в приложении консоли .NET.
  • Как написать быстрый цветной вывод на консоль?
  • Запустить консольное приложение из другого консольного приложения
  • Как программно отключить режим быстрого редактирования C # консольного приложения?
  • Как запустить консольное приложение из Windows Service?
  • Как открыть окно консоли
  • Как мне разрешить ввод номера в мое консольное приложение C #?
  • Как получать уведомления устройства Plug & Play без формы windows
  • Давайте будем гением компьютера.