|
0 / 0 / 1
Регистрация: 13.11.2016
Сообщений: 20
|
|
.NET 4.x Потоки, мультипоточность Task or Async/Await or ThreadPool?16.11.2016, 13:59. Показов 5135. Ответов 30
Метки нет (Все метки)
Здравствуйте форумчане. Я очень нуждаюсь в вашей помощи.
Я реализовываю парсер с одного довольно популярного сайта занятости и трудоспособности. В общем программа собирает информацию имя, фамилия и т.д. Работает она в 100-200 потоках с использованием проксей. В потоках парсится информация и выводится в GUI, а это: 1)Статистика успешных подключений и сбора информации, которая отображается в label 2)Вывод информации в richtextbox. 3)увеличение progressbar. 4)Сохранение информации в файл. Использовал Thread но с ним задача перерастает в АД. Гемморой с выводом, чтобы ГУИ не тормозил + сохранение из несколько потоков в файл нереален. Мой вопрос: какой вид потоков мне использовать для задачи. Алгоритм примерно таков: Создаются потоки(штук 100) Каждый Поток идет в метод подключения к сайту , распаршивает полученный html, вытаскивает нужные значения и передает их в ГУИ.
0
|
|
| 16.11.2016, 13:59 | |
|
Ответы с готовыми решениями:
30
Многопоточность с async/await и Task
|
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
||
| 17.11.2016, 10:52 | ||
|
insite2012, понятно что для разных задач - разные методы решения. Если ограничения вида "поддержка WinXP" не оговорены явно, наверное не стоит их рассматривать. Тут, по-моему, спорить не о чем. А вот про реализацию своего BGW хотелось бы по-подробнее, если можно.
0
|
||
|
|
|||
| 17.11.2016, 10:58 | |||
![]() Тут самый простенький пример.
1
|
|||
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
|||||||
| 17.11.2016, 11:16 | |||||||
.Похожий велосипед и у меня нашелся: Кликните здесь для просмотра всего текста
0
|
|||||||
|
|
||
| 17.11.2016, 11:32 | ||
OnDoWork() можно запросто вызывать любое исключение через throw(), и ничего не упадет. А в обработчике RunWorkerCompleted проверяем свойство Error, и если оно не null, это и есть наше исключение. Разве вы не видите удобства? Странно...
0
|
||
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
|
| 17.11.2016, 11:37 | |
|
insite2012, ааа, теперь понял
Добавлено через 46 секунд или нет...
0
|
|
|
|
||
| 17.11.2016, 11:41 | ||
OnDoWork() мы делаем свою работу, можем бросать исключения (или что-то еще, что мы оттуда вызываем может его выбросить, не суть). Если оно возникнет - выполнение данного метода (но не всего приложения) прервется, а во внешнем коде отработает обработчик RunWorkerCompleted(), из свойства Error аргумента этого обработчика мы и получаем наше исключение.
0
|
||
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
|
| 17.11.2016, 11:41 | |
|
Основной метод, который делает работу, подписан на событие ProgressChanged. Он будет выполнятся в потоке GUI. И при возникновении исключения в нём программа крашнется. Разве нет? Сейчас проверю.
0
|
|
|
|
||
| 17.11.2016, 11:45 | ||
|
TopLayer, как-то странно у вас организовано... Этот метод об уведомлениях о прогрессе длительной операции, зачем в нем делать какую-то основную работу...
Добавлено через 1 минуту
0
|
||
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
||||||
| 17.11.2016, 12:57 | ||||||
|
insite2012, единственное, что мне не нравится это ReportProgress. BeginInvoke более гибок. Вот такой сценарий естественным образом не укладывается в ReportProgress:
0
|
||||||
|
|
||
| 17.11.2016, 13:50 | ||
ReportProgress() - это одно, а Invoke()/BeginInvoke() - другое. И сферы применения разные.
1
|
||
|
0 / 0 / 1
Регистрация: 13.11.2016
Сообщений: 20
|
|
| 17.11.2016, 14:12 [ТС] | |
|
Что универсальней и лучше/качественней? Parallel или Task?
Я сейчас Task изучил, теперь более подробно, с изгибами так сказать пройдусь по Task, для понимания важных аспектов. А к чему стремиться то? Кликните здесь для просмотра всего текста
P.s наверное никто не ответит на данный вопрос, придется самому перелопатить все методы создания потоков и прийти к мнению. Сложней, но качественней.
0
|
|
| 17.11.2016, 14:12 | |
|
Перевести выполнение в потоки (с помощью async/await) Async, await
async/await (._. ) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|