.NET 3.x Загрузка файлов по очереди используя WebClient - C#

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

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

Есть List<string> в котором ссылки на скачку файлов. Циклом прохожу по каждой ссылке и загружаю файл используя WebClient. Проблема в том, что используя метод DownloadFile, зависает все приложение(а мне нужно отображать процесс в прогрессбар), а использую DownloadFileAsync пишет ошибку, что вебклиент не поддерживает параллельную скачку.

Решение задачи: «.NET 3.x Загрузка файлов по очереди используя WebClient»

textual
Листинг программы
  1. WebClient wc = new WebClient(); //поле класса
  2. //создаем обработчик события "файл загружен"
  3.  client.DownloadFileCompleted += s=> {
  4.      Stack<string> urls = (s as Stack<string>);
  5.      if(urls.Count>0) {
  6.         var file = urls.Pop();
  7.          wc.DownloadFileAsync(new Uri(file.Item1), file.Item2, urls);
  8.      }
  9. }
  10. //готовим стек для загрузки
  11. Stack<Tuple<string, string>> urls = new Stack<Tuple<string, string>>();
  12. urls.Push(new Tuple<string, string>(url, filename));
  13. ...
  14. //вызываем загрузку
  15. var file = urls.Pop();
  16. wc.DownloadFileAsync(new Uri(file.Item1), file.Item2, urls);

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


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

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

14   голосов , оценка 4.071 из 5

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

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

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