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

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

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

Есть List<string> _urls - в нем хранятся URL mp3 . textBox1.Text - там путь к папке куда загружать listBox1 - имена аудио записей Мне нужно все эти аудио записи загрузить по очереди естественно. Делаю так:
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");
                }
Выходит исключение: Дополнительные сведения: WebClient не поддерживает параллельные операции ввода-вывода. Как скачать все аудио записи из листа

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

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();
        }
    }
}

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


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

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

14   голосов , оценка 3.929 из 5
Похожие ответы