Я пишу загрузчик на C # и остановился на следующей проблеме: какой метод я должен использовать для распараллеливания моих загрузок и обновления моего графического интерфейса?
В моей первой попытке я использовал 4 Threads ипо завершении каждого из них я запускал еще один: основная проблема заключалась в том, что мой процессор переходит на 100% при каждом запуске нового потока.
Погуглив, я обнаружил существование BackgroundWorker и ThreadPool: заявив, что я хочуобновлять мой графический интерфейс с прогрессом каждой ссылки, которую я загружаю, каково лучшее решение?
1) Создание 4 различных BackgroundWorker, присоединение к каждому событию ProgressChanged Делегата к функции в моем GUI для обновленияprogress?
2) Использовать ThreadPool и устанавливать максимальное и минимальное количество потоков в одно и то же значение?
Если я выберу # 2, когда в очереди больше нет потоков, останавливается ли она4 рабочие темы?Это приостанавливает их?Поскольку мне приходится загружать разные списки ссылок (по 20 ссылок каждая) и переходить от одной к другой, когда она завершена, запускает и останавливает ли ThreadPool потоки между каждым списком?
Если я хочу изменитьколичество рабочих потоков в прямом эфире и решили использовать ThreadPool, меняя с 10 потоков на 6, он выбрасывает и исключает и останавливает 4 случайных потока?
Это единственная часть, которая вызывает у меня головную боль.Я заранее благодарю каждого из вас за ваши ответы.