Как перехватить нажатие клавиши в консольном приложении (.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()
