Сведения о вопросе

PASHA

09:50, 22nd August, 2020

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

Просмотров: 336   Ответов: 4

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


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


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


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


Если так, подскажите каким образом возможно осуществить ввод данных от пользователя не вызывая ожидание ввода (основная программа должна выполняться без остановки).



  Сведения об ответе

DO__IT

07:33, 2nd August, 2020

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

С другой стороны, возможно, ReadLine ведет себя по-другому. Тогда я соглашусь с предыдущим комментарием — нужно выносить бесконечный цикл в поток, а интерактивно работать в основном.


  Сведения об ответе

park

08:05, 19th August, 2020

Вынести логику работы программы в отдельный поток, а в основном работать интерактивно…


  Сведения об ответе

PAGE

07:23, 16th August, 2020

Делегаты и invoke Вам в помощь, по сути у Вас приложение с «интерфейсом».


  Сведения об ответе

screen

20:34, 1st August, 2020

огромное всем спасибо за помощь


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться