Многопоточный загрузчик в C # - PullRequest
2 голосов
/ 05 февраля 2012

Я работаю над менеджером загрузки WPF, который должен поддерживать загрузку нескольких файлов одновременно через HTTP, добавление новой загрузки, приостановка / возобновление, отображение и обновление информации о каждом процессе загрузки (имя файла, размер, процент загрузки, время осталось ...) в DataGrid, отображая прогресс в ProgressBar и кучу других вещей.

Итак, идея состоит в том, чтобы использовать отдельный поток для каждого процесса загрузки и иметь возможность динамически создавать / отменять потоки. Каков наилучший способ сделать это? Используя BackgroundWorker, ThreadPool?

Ответы [ 2 ]

6 голосов
/ 05 февраля 2012

Методы WebClient XXXAsync, такие как DownloadFileAsync, уже предоставляют асинхронные версии всех методов, которые позволяют выполнять запросы HTTP в отдельных потоках.Они также C # 5.0 async готовы.

Поскольку это приложение WPF, убедитесь, что вы изменяете элементы управления пользовательского интерфейса только в основном потоке пользовательского интерфейса, используя метод Dispatcher.BeginInvoke .

0 голосов
/ 05 февраля 2012

Я бы просто использовал Thread напрямую и сохранил бы ссылки на все шаги, которые я создал.

...