.NET 4.x Как скачивать несколько файлов через WebClient по очереди, через DownloadFileAsync - C#

Узнай цену своей работы

Формулировка задачи:

Доброй ночи. Столкнулся с проблемой по скачиванию нескольких файлов друг за другом. Фулл код как скачиваю:
Листинг программы
  1. void DownloadMPQ(Uri u, string s)
  2. {
  3. WebClient web = new WebClient();
  4. web.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Download);
  5. web.DownloadFileCompleted += new AsyncCompletedEventHandler(DownComp);
  6. web.DownloadFileAsync(u, s);
  7. }
  8. void DownComp(object sender, AsyncCompletedEventArgs e)
  9. {
  10. NotificShow(String.Format("'{0}' скачан.", ThisFile));
  11. }
  12. void Download(object sender, DownloadProgressChangedEventArgs e)
  13. {
  14. long q = e.TotalBytesToReceive / 1024;
  15. prgDownload.Properties.Maximum = (int)q;
  16. prgDownload.EditValue = e.BytesReceived / 1024;
  17. }
И как вызываю (на примере 1 файла)
Листинг программы
  1. DownloadMPQ(new Uri("http://localhost/mp.mpq"), "mp.mpq");
В итоге он мне начинает качать все файлы подряд, т.е. в несколько потоков. Вопрос все таки такой: как мне дождаться скачивания 1 файла и начать качать 2й? Новый поток? Пробовал. Не двигается прогресс бар.

Решение задачи: «.NET 4.x Как скачивать несколько файлов через WebClient по очереди, через DownloadFileAsync»

textual
Листинг программы
  1.         public async Task DownloadManyFiles(Dictionary<Uri, string> files)
  2.         {
  3.             WebClient wc = new WebClient();
  4.             wc.DownloadProgressChanged += (s, e) => progressBar1.Value = e.ProgressPercentage;
  5.             foreach (KeyValuePair<Uri, string> pair in files) { await wc.DownloadFileTaskAsync(pair.Key,pair.Value);}
  6.             wc.Dispose();
  7.         }
  8.  
  9.         private void button1_Click(object sender, EventArgs e)
  10.         {
  11.             Dictionary<Uri, string> dict = new Dictionary<Uri, string>();
  12.             dict.Add(new Uri("https://download.microsoft.com/download/4/E/3/4E38FD5A-8859-446F-8C58-9FC70FE82BB1/Express%2032BIT%20WoW64/SQLEXPR32_x86_RUS.exe"), "Firstfile.exe");
  13.             dict.Add(new Uri("https://download.microsoft.com/download/4/E/3/4E38FD5A-8859-446F-8C58-9FC70FE82BB1/Express%2032BIT/SQLEXPR_x86_RUS.exe"), "Secondfile.exe");
  14.             DownloadManyFiles(dict);
  15.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы