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 всплывает.
Как сделать, что бы загрузка началась и после того как все будет скачано по ссылкам показало, что все прошло успешно.
  • Вопрос задан
  • 1029 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Самый простой способ это добавить переменную.
Перед запуском выставите число ожидаемых файлов.
Так где: "MessageBox.Show("Файл успешно загружен","
counter--;
if (counter == 0)
    MessageBox.Show("Файл успешно загружен"...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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