Нужно сообщить о прогрессе с помощью webclient
Приложение загружает несколько файлов асинхронно, поэтому, когда я ввожу 10 ссылок в список, 10 файлов начинают загружаться. Я хотел динамически создавать индикаторы выполнения для каждого файла и сообщать о ходе выполнения. Это то, что я использую для отчета о прогрессе
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(worker_ProgressChanged);но это не работает.
Когда я это сделаю
worker.ReportProgress(10);
это работает, но im может сообщить только целое число, а не клиент.Скачать progresschanged.
Мой вопрос заключается в том, как мне прикрепить клиента.Загрузите progresschanged в мой класс worker_ProgressChanged.
Что я уже пробовал:
private void backgroundWorker1_DoWork(отправитель объекта, DoWorkEventArgs e)
{
Список<строка> В списке "мой список" = (Список<строка> В)электронная.Аргумент;
по каждому элементу(строка йо в мой список)
{
Прогрессбар бар = новый прогрессбар();
позиция += 30;
бар.Ширина = 300;
бар.Location = новая точка(300, позиция);
Invoke(new ToDoDelegate (() = & gt; bar.Location = новая точка(150, позиция)));
Invoke(new ToDoDelegate (() = & gt; this.Управления.Добавить (бар)));
Вызвать(новый ToDoDelegate(() =&ГТ; бар.Видимое = истинное));
WebClient client = новый WebClient();
строке filename = йо.Подстрока(йо.LastIndexOf("/") + 1, (йо.Длина - йо.LastIndexOf("/") - 1));
клиент.DownloadFileAsync(новый Uri (yo), "C:\\Test4\\" + имя файла);
клиент.DownloadProgressChanged += новый DownloadProgressChangedEventHandler(worker_ProgressChanged);
// (отправитель как BackgroundWorker).ReportProgress ((клиент.DownloadFileAsync (новый Uri (yo), имя файла)));
работник.ReportProgress(10);
}
}
частная worker_ProgressChanged недействительным(объект отправителя, ProgressChangedEventArgs е)
{
Ящик для сообщений.Шоу ("я докладываю");
}