Задать вопрос
Morpheus_God
@Morpheus_God

Пакетная загрузка файлов, как сделать?

Добрый день, в приложении мне надо сделать загрузку файлов из списка ссылок.
Там может быть как 10 так и 20 ссылок.
На форме есть Progress Bar.

Метод в который я передаю через foreach ссылки.
private void Downloader(string link, string filepath)
        {
            using (WebClient wc = new WebClient())
            {
                wc.DownloadProgressChanged += Wc_DownloadProgressChanged;
                wc.DownloadFileCompleted += Wc_DownloadFileCompleted;
                wc.DownloadFileAsync(new Uri(link), filepath);
            }
        }

И пара событий
private void Wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            progressBar.Value = e.ProgressPercentage;
        }
private void Wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            progressBar.Value = 0;

            if (e.Cancelled)
            {
                MessageBox.Show("Загрузка прервана", "Ошибка", MessageBoxButtons.OK,MessageBoxIcon.Error);
                return;
            }
            if (e.Error != null) 
            {
                MessageBox.Show("Произошла ошибка во время загрузки файла","Ошибка", MessageBoxButtons.OK,MessageBoxIcon.Error);
                return;
            }
            MessageBox.Show("Файл успешно загружен", "Сообщение",MessageBoxButtons.OK,MessageBoxIcon.Information);
        }

Все бы ничего, но после каждого файла появляется Message Box и говорит, что файл загружен. 10 файлов качает 10 MessageBox всплывает.
Как сделать, что бы загрузка началась и после того как все будет скачано по ссылкам показало, что все прошло успешно.
  • Вопрос задан
  • 1052 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Самый простой способ это добавить переменную.
Перед запуском выставите число ожидаемых файлов.
Так где: "MessageBox.Show("Файл успешно загружен","
counter--;
if (counter == 0)
    MessageBox.Show("Файл успешно загружен"...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы