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

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

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

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

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

textual
Листинг программы
WebClient wc = new WebClient(); //поле класса
//создаем обработчик события "файл загружен"
 client.DownloadFileCompleted += s=> {
     Stack<string> urls = (s as Stack<string>);
     if(urls.Count>0) {
        var file = urls.Pop();
         wc.DownloadFileAsync(new Uri(file.Item1), file.Item2, urls);
     }
}
//готовим стек для загрузки
Stack<Tuple<string, string>> urls = new Stack<Tuple<string, string>>();
urls.Push(new Tuple<string, string>(url, filename));
...
//вызываем загрузку
var file = urls.Pop();
wc.DownloadFileAsync(new Uri(file.Item1), file.Item2, urls);

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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