Нет, не как таковой. Оба метода блокируются до тех пор, пока пользователь ничего не введет на консоль. Таким образом, даже если вы найдете способ, чтобы оба они выполнялись параллельно, он не будет детерминированным, чтобы получить первый снимок.
Существует (не очевидная) аналогичная проблема: как сделать Console.ReadLine()
прерывание/перерыв через определенное количество времени без ввода пользователем.
Там было несколько попыток для этой проблемы здесь:
Большинство моделируются вокруг либо создать свою собственную версию ReadLine
функцию, которая добавляет тайм-аут (или в вашем случае специальная обработка для определенного символа (коды)) или использование какой-либо резьбы.
Оба способа являются либо нетривиальными, либо имеют свои собственные проблемы (убедитесь, что вы просматриваете комментарии, даже для принятых ответов).
Вкратце, я думаю, вам нужно будет перевернуть свою собственную версию ReadLine, основанной на Console.ReadKey
, с вашей специальной обработкой и большей частью подлинного поведения Console.ReadLine
, которое вам нужно. Обратите внимание, что это даже включает в себя такие основные вещи, как RETURN, ВИДЕ СТРЕЛОК, обработка BACKSPACE и т.д.
Update: Существует getline.cs кода из Mono project, который реализует возможность редактирования в линии, как это было предусмотрено каким-то почтенным UNIX shell (режим EMACS, если вам интересно). Для этого я считаю, что ему потребуется реализовать какую-то замену ReadLine, хотя я не проверял. Возможно, вы можете использовать это как отправную точку.
возможно дубликат http://stackoverflow.com/questions/5891538/c-sharp-listen-for-key-press-in-console-app – Alex