@OwDafuq

Как скачивать несколько файлов через WebClient по очереди? Через DownloadFileAsync?

Доброй ночи. Столкнулся с проблемой по скачиванию нескольких файлов друг за другом.
Фулл код как скачиваю:
void DownloadMPQ(Uri u, string s)
        {
            WebClient web = new WebClient();
            web.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Download);
            web.DownloadFileCompleted += new AsyncCompletedEventHandler(DownComp);
            web.DownloadFileAsync(u, s);
        }
        void DownComp(object sender, AsyncCompletedEventArgs e)
        {
            NotificShow(String.Format("'{0}' скачан.", ThisFile));
        }
        void Download(object sender, DownloadProgressChangedEventArgs e)
        {
            long q = e.TotalBytesToReceive / 1024;
            prgDownload.Properties.Maximum = (int)q;
            prgDownload.EditValue = e.BytesReceived / 1024;
        }


И как вызываю (на примере 1 файла)
DownloadMPQ(new Uri("http://localhost/mp.mpq"), "mp.mpq");

В итоге он мне начинает качать все файлы подряд, т.е. в несколько потоков.
Вопрос все таки такой: как мне дождаться скачивания 1 файла и начать качать 2й? Новый поток? Пробовал. Не двигается прогресс бар.
  • Вопрос задан
  • 1466 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C#
1) сразу попробовать DownloadFileTaskAsync, с тасками работать проще;
2) дожидаться завершения таска на скачку одного файла перед запуском следующего;
3)
Новый поток? Пробовал. Не двигается прогресс бар.

Работать с контролами только из GUI-потока. Читать про SynchronizationContext.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы