Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2020, 07:58   #1
Lomakin
Пользователь
 
Регистрация: 19.12.2018
Сообщений: 21
По умолчанию WebClient и progressBar

Всем привет.
Понадобилось програмка для скачивания небольших файлов.
На форумах нашел этот код но тут прогресс бар показывает только
один файл как быть если мне надо скачать несколько файлов.
Код:
 using (WebClient wc = new WebClient())
   {
        wc.DownloadProgressChanged += (s, a) => { progressBar1.Value =a.ProgressPercentage; };           
        wc.DownloadFileAsync(new Uri(URL), @"c:\File.exe");
   }
Lomakin вне форума Ответить с цитированием
Старый 30.03.2020, 21:07   #2
Lomakin
Пользователь
 
Регистрация: 19.12.2018
Сообщений: 21
По умолчанию

Вот что то получилось.
У меня работает.
Может кому пригодится.
Код:
using System;
using System.ComponentModel;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WebClient
{
    public partial class Form1 : Form
    {
        private static EventWaitHandle handle = new AutoResetEvent(false);
 
        
        private int sizeValue = 0;
        private string[] Url =
        {
            "https://cache-mskstoredata06.cdn.yandex.net/download.cdn.yandex.net/getfirefox/FirefoxSetup.exe",
            "https://cache-mskstoredata01.cdn.yandex.net/download.cdn.yandex.net/opera/Opera_setup.exe",
            "https://cache-mskstoredata09.cdn.yandex.net/download.cdn.yandex.net/ie/win10/IE11-Setup-Full-64bit.exe"
        };
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Task.Factory.StartNew(() => { LoadFiles(Url); });
        }
 
        private void LoadFiles(string[] args)
        {
            BeginInvoke(new ThreadStart(delegate { progressBar1.Maximum = 0; }));
 
            using (var wc = new System.Net.WebClient())
            {
                foreach (var indUrl in Url)
                {
                    wc.OpenRead(indUrl);
                    var SizeMax = Convert.ToInt32(wc.ResponseHeaders["Content-Length"]);
                    BeginInvoke(new ThreadStart(delegate { progressBar1.Maximum += SizeMax; }));
                }
 
                wc.DownloadProgressChanged += client_DownloadProgressChanged;
                wc.DownloadFileCompleted += client_DownloadFileCompleted;
 
                for (var i = 0; i < args.Length; i++)
                {
                    wc.DownloadFileAsync(new Uri(args[i]), @"C:\" + i + ".exe");
                    handle.WaitOne();
                }
 
                MessageBox.Show("Загрузка завершена.");
            }
        }
 
        private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            BeginInvoke(new ThreadStart(delegate
            {
                progressBar1.Value = sizeValue + Convert.ToInt32(e.BytesReceived);
            }));
        }
 
        private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            handle.Set();
            BeginInvoke(new ThreadStart(delegate { sizeValue = progressBar1.Value; }));
        }
    }
}
Lomakin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c# webclient не получает ответ Yoh Помощь студентам 2 11.02.2015 14:22
Загрузка файлов WebClient koljsch C# (си шарп) 0 06.03.2014 00:46
Отключение Keep-Alive для webClient Dezmont_ C# (си шарп) 0 07.08.2013 13:53
Download file Webclient Cpluser C# (си шарп) 1 16.07.2013 22:19
WebClient исключение MyXa Общие вопросы .NET 4 02.02.2011 13:47