Асинхронная загрузка нескольких файлов по очереди - C#

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

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

Есть List<string> _urls - в нем хранятся URL mp3 . textBox1.Text - там путь к папке куда загружать listBox1 - имена аудио записей Мне нужно все эти аудио записи загрузить по очереди естественно. Делаю так:
Листинг программы
  1. WebClient webClient = new WebClient();
  2. for (int i = 0; i < config._urls.Count; i++)
  3. {
  4. webClient.DownloadFileAsync(new Uri(config._urls[i]), textBox1.Text + "\\" + listBox1.Items[i].ToString() + ".mp3");
  5. }
Выходит исключение: Дополнительные сведения: WebClient не поддерживает параллельные операции ввода-вывода. Как скачать все аудио записи из листа

Решение задачи: «Асинхронная загрузка нескольких файлов по очереди»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using System.Net;
  9.  
  10. namespace ConsoleApplication55 {
  11.     class Program {
  12.         static WebClient client = new WebClient();
  13.         static EventWaitHandle handle = new AutoResetEvent(false);
  14.  
  15.         static void Main(string[] args) {
  16.             string[] addresses = { "la-la-la", "lo-lo-lo", "lu-lu-lu" };
  17.             Task.Factory.StartNew(() => { LoadFiles(addresses); });
  18.             Console.ReadLine();
  19.         }
  20.         static void LoadFiles(string[] args) {
  21.             client.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(client_DownloadFileCompleted);
  22.             for (int i = 0; i < args.Length; i++) {
  23.                 client.DownloadFileAsync(new Uri(args[i]), @"C:\miFile_" + i + ".mp3");
  24.                 handle.WaitOne();
  25.             }
  26.             Console.WriteLine("All files were downloaded!");
  27.         }
  28.  
  29.         static void client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) {
  30.             handle.Set();
  31.         }
  32.     }
  33. }

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


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

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

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

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

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

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