Прослушивание ES C нажмите во время консольного приложения без «кражи» первого символа пользовательского ввода - PullRequest
0 голосов
/ 05 мая 2020

Я тренируюсь с C# на пути к тому, чтобы стать разработчиком, так что я новичок во всем этом. Я пишу простое консольное приложение, чтобы немного попрактиковаться, используя проблемы, с которыми я сталкиваюсь, чтобы узнать больше о том, как работать с языком. Поскольку мне нравится D&D, я сделал простое приложение, которое бросает разные кости с псевдослучайными числами с возможностью добавления модификаторов. Он спрашивает пользователя, какой тип d ie он хотел бы бросить, сколько, есть ли какие-либо модификаторы et c. et c.

Короче говоря, вот моя проблема: я хочу дать пользователю возможность выйти из программы в любой момент времени, нажав ES C, при этом в остальном работаю как обычно и обрабатывая ввод пользователя как обычно.

Мое консольное приложение зависит от ввода пользователя. Все, что он делает, это запрашивает у пользователя ввод, а затем что-то делает с этим вводом, например, калькулятор. Существует как минимум 6+ различных моментов, когда пользователю предлагается ввести данные (тип d ie, количество игральных костей, добавление модификаторов и т.д. c.). Я хочу предложить пользователю возможность выхода из программы в любое время, нажав ES C вместо ввода данных. Поскольку запросов так много, я хочу предотвратить добавление проверки ES C в каждое приглашение, чтобы код не становился повторяющимся и неуклюжим.

Я пробовал многопоточность со слушателем для ES C, но я обнаружил, что он «украл» первый символ каждой подсказки, вводимой пользователем. Если я нажму ES C, программа аккуратно завершится так же, как я хочу, но если я не хочу выходить и просто ввести свои данные, первое нажатие клавиши отсутствует, потому что оно использовалось для проверки ES C key.

Есть ли способ проверить, является ли это ключом ES C, а если нет, просто оставить ввод там, где он был?

...