Асинхронная загрузка нескольких файлов по очереди - C#
Формулировка задачи:
Есть List<string> _urls - в нем хранятся URL mp3 .
textBox1.Text - там путь к папке куда загружать
listBox1 - имена аудио записей
Мне нужно все эти аудио записи загрузить по очереди естественно.
Делаю так:
Выходит исключение: Дополнительные сведения: WebClient не поддерживает параллельные операции ввода-вывода.
Как скачать все аудио записи из листа
WebClient webClient = new WebClient();
for (int i = 0; i < config._urls.Count; i++)
{
webClient.DownloadFileAsync(new Uri(config._urls[i]), textBox1.Text + "\\" + listBox1.Items[i].ToString() + ".mp3");
}Решение задачи: «Асинхронная загрузка нескольких файлов по очереди»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Net;
namespace ConsoleApplication55 {
class Program {
static WebClient client = new WebClient();
static EventWaitHandle handle = new AutoResetEvent(false);
static void Main(string[] args) {
string[] addresses = { "la-la-la", "lo-lo-lo", "lu-lu-lu" };
Task.Factory.StartNew(() => { LoadFiles(addresses); });
Console.ReadLine();
}
static void LoadFiles(string[] args) {
client.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(client_DownloadFileCompleted);
for (int i = 0; i < args.Length; i++) {
client.DownloadFileAsync(new Uri(args[i]), @"C:\miFile_" + i + ".mp3");
handle.WaitOne();
}
Console.WriteLine("All files were downloaded!");
}
static void client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) {
handle.Set();
}
}
}