2015-08-10 6 views
-1

Обычно я использую Console.ReadLine(); для захвата одного нажатия клавиши. Но эта функция блокирует выполнение и продолжает ждать, пока это произойдет.захват нажатия клавиши без блокировки

Возможно ли, внутри цикла, захватить его, если оно нажато и продолжить выполнение, если это не так?

Лучшее будет чем-то похожее на приложения с графическим интерфейсом, которые будут работать, и в любое время, когда выполняется ярлык, он перехватывается, и событие бросается на захват. Но я сомневаюсь, что консольные приложения могут это сделать.

Вторым лучшим решением будет Console.ReadLine();, который ждет 1 секунду, а затем возвращается. Если пользователь удерживает кнопку клавиатуры во время вызова функции, функция идентифицирует нажатие клавиши и возвращает ее символ, иначе функция возвращает с нулевым значением.

+0

Используйте 'Console.In.Peek()', чтобы проверить, ввел ли пользователь что-либо. –

+0

вы можете проверить 'Console.KeyAvailable' – dotctor

+0

[Слушать нажатие клавиши в консольном приложении .NET] (http://stackoverflow.com/questions/5891538/listen-for-key-press-in-net-console-app) – CodeCaster

ответ

1

Ты прочитал (а) MSDN Key press info for console?

Вы можете использовать Console.KeyAvailable, чтобы определить, действительно ли вы хотите получить ключ в очереди.