Первый поток считывает данные из текстового файла. Если считается число, оно передается во 2-й поток, если слово – в 3-й. Второй поток находит максимум и минимум получаемых чисел и выводит эти данные на экран. Третий поток находит слово с максимальным количеством гласных букв и выводит его на экран.
chavarria, Под "потоком" имеется в виду thread или task? В какой момент времени потоки выводят инфу на экран - после обработки каждого нового значения или в конце после того как весь файл прочитан? есть код который ты набросал но в нем что-то не работает или ты хочешь чтобы тебе всё написали?
chavarria, угу - это я ступил, потоки надо запускать так: var consumers = new[] { new Thread(() => ConsumeNumbers().Wait()), new Thread(() => ConsumeWords().Wait()), new Thread(() => ReadAndPublish().Wait()), }; C# var consumers = new[] { new Thread(() => ConsumeNumbers().Wait()), new Thread(() => ConsumeWords().Wait()), new Thread(() => ReadAndPublish().Wait()), };
vtlstolyarov, спасибо. Последний вопрос задам и отстану уже наконец) Почему с консолью все окей работало, а здесь вскрылась эта проблема?
chavarria, Я точно не уверен, но думаю что проблема в синхронизации контекста - у консольных и WinForms приложений контекст основного потока различается. Фактически без предыдущего фикса, сама обработка очередей велась в основном потоке (используя при этом TaskScheduler) и только ожидание окончания работы происходило в других потоках.