UrbanRider
@UrbanRider

Многопоточность в консольном приложении на C#?

Нужно сделать следующее (грубоговоря):


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


Появилась идея вынести ввод пользователя в другой поток. почитал доку вынес в другой поток. в созданном потоке Console.ReadLine() не работает.


Насколько я понимаю дело в том что ReadLine и WriteLine по сути используют stdin и stdout, и они уже заняты основным потоком приложения?


Если так, подскажите каким образом возможно осуществить ввод данных от пользователя не вызывая ожидание ввода (основная программа должна выполняться без остановки).
  • Вопрос задан
  • 4277 просмотров
Решения вопроса 1
@tangro
Пример с вызовом Console.WriteLine() из нескольких параллельных потоков — канонический пример, встречающийс в интернете на каждом углу, как иллюстрация многопоточности. Следовательно, мысль о блокировке stdin и stdout неверна.

С другой стороны, возможно, ReadLine ведет себя по-другому. Тогда я соглашусь с предыдущим комментарием — нужно выносить бесконечный цикл в поток, а интерактивно работать в основном.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
aavezel
@aavezel
Веб девелопер
Вынести логику работы программы в отдельный поток, а в основном работать интерактивно…
Ответ написан
Комментировать
UrbanRider
@UrbanRider Автор вопроса
огромное всем спасибо за помощь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы