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