Как перехватить нажатие клавиши в консольном приложении (.NET)
Если нужно проверить, не была ли нажата пользователем определённая клавиша клавиатуры во время выполнения длительной операции в консольном приложении, используется свойство Console.KeyAvailable().
Для примера напишем процедуру CheckEscapePressed(), которая будет проверять, не была ли нажата клавиша Escape:
Public Function CheckEscapePressed() as Boolean If Console.KeyAvailable Then Dim k As ConsoleKey = Console.ReadKey(True).Key If k.Equals(ConsoleKey.Escape) Then Console.Write("Операция была прервана.") Return True End If End If Return False End Function
Можно проверять нажатие любой из доступных в перечислении System.ConsoleKey клавиш.
А теперь в любом месте программы можем использовать нашу процедуру CheckEscapePressed(). Например, для прерывания бесконечного цикла по нажатию на клавишу "Escape":
Do Console.WriteLine("Ожидаем нажатия клавиши ""Escape""...") Thread.Sleep(1000) Loop Until CheckEscapePressed()