Асинхронная загрузка нескольких файлов по очереди - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д