0

У меня вопрос. Мне нужно сделать так, чтобы программа реагировала на нажатие клавиши, но когда пользователь не нажимал клавишу, программа продолжала работать. Когда я использую функцию

Console.ReadKey(true);

Программа не продолжает работать, пока я не нажму клавишу. Как это изменить?

  • https://ru.stackoverflow.com/questions/755490/%d0%a1-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d1%8c%d0%bd%d0%be%d0%b5-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5?rq=1 – 1001001 Feb 15 '22 at 11:52
  • tomato-magnet-regulato, спасибо, но мне нужно сделать так, чтобы программа работала всё время, а не останавливалась, когда считывает нажатие клавиши. Когда я вызываю Console.ReadKey(), программа ждёт, пока я нажму клавишу и не продолжает работать. В C++ есть _kbhit(), есть ли что-нибудь такое в C#? – Mikhail Feb 15 '22 at 12:04
  • if (Console.KeyAvailable) keyInfo = Console.ReadKey(true); ну или есть еще вот такой монстр https://ru.stackoverflow.com/a/1201951/373567 – aepot Feb 15 '22 at 12:18

1 Answers1

1

Console.KeyAvailable - true if a key press is available; otherwise, false.

Если KeyAvailable возвращает true, вызывайте Console.ReadKey прочитать этот символ, иначе он останется во входном буфере и будет прочитан следующей командой ввода.

Console.KeyAvailable Property

Alex F
  • 1,772
  • Alex F, спасибо! – Mikhail Feb 15 '22 at 12:26
  • Лучше писать доп инфу не в комментарии, а отредактировать сам ответ. https://github.com/dotnet/runtime/blob/main/src/libraries/System.Console/src/System/ConsolePal.Windows.cs#L268 – aepot Feb 15 '22 at 12:28