Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# .NET

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
zombie
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 29
#1

DownloadFileAsync: как определить, какой файл сейчас скачивается - C#

16.05.2012, 17:58. Просмотров 1210. Ответов 4
Метки нет (Все метки)

Всем доброго времени суток!

У меня есть несколько файлов, которые я хочу скачать
все они занесены в ListView и напротив каждого есть ProgressBar

Далее я все скачиваю с помощью WebClient.DownloadFileAsync

C#
1
2
3
4
5
6
7
8
private void download(int i, string savepath, string format)
{
     WebClient wc = new WebClient(); 
     wc.DownloadProgressChanged += new           
     DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
     wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
     wc.DownloadFileAsync(new Uri(LV.Items[i].SubItems[1]), savepath + format);
}
И все вроде отлично, только "находясь" в wc_DownloadProgressChanged я понятия не имею, какой именно файл скачиваю => не могу заполнить ProgressBar.

Подскажите пожалуйста, как решить эту проблему. (Скачивать по очереди - не вариант)

Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2012, 17:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос DownloadFileAsync: как определить, какой файл сейчас скачивается (C#):

Как программно определить какой язык сейчас включен!? - C#
Как программно определить какой язык сейчас активен!? те кто не понял вопрос, смотрите на картинку: ...

Апдейт программы, не всегда скачивается файл или скачивается не полностью. Посоветуйте решение... - C#
Здравствуйте! Апдейтю программу, качаются файлы. Но бывает, что один из файлов (или несколько) просто не скачиваются, а создаётся в папке...

Как определить, какой процесс в данный момент использует файл? Хочу написать бесплатный аналог Unlocker - C#
Просто Unlocker требует установки и он платный:(

Как определить какое окно у пользователя активное сейчас - C#
Как определить какое окно у пользователя активное сейчас ? если можно то с примером. Буду очень благодарен! Добавлено через 6 часов...

Этот файл сейчас используется.Укажите другое.... - C#
Добрый день! Вопрос может быть и глупый, но все же! Ниже приведен код для открытия файла *.mdf на моей форме.Для поиска и открытия файла я...

Определить, на скольких компах сейчас запущено приложение - C#
Как возможно определить, сколько человек запустили мое приложение? Точнее, сколько в данный момент запущено приложений? Сколько было...

4
I2um1
Злой няш
1404 / 1102 / 142
Регистрация: 05.04.2010
Сообщений: 1,949
16.05.2012, 18:59 #2
Почитайте это. Лично я бы ProgressBar'ом показывал количество скаченных файлов, хотя же все зависит от того количества, которое надо скачать.
0
zombie
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 29
17.05.2012, 01:54  [ТС] #3
Я прочел уже кучу подобных примеров, они отлично работают если мы качаем один файл и у нас один ProgressBar
У меня же много файлов - много ProgressBar'ов (допустим, они лежат а списке).
C#
1
2
3
4
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
  progressBar.Value = e.ProgressPercentage; //как здесь мне узнать, какому прогрессбару назначить значение??
}
0
turbanoff
Модератор
Эксперт Java
3973 / 3708 / 460
Регистрация: 18.05.2010
Сообщений: 9,286
Записей в блоге: 11
Завершенные тесты: 1
17.05.2012, 12:48 #4
ProgressChanged скорее всего генерирует сам WebClient, поэтому можно сохранить их в какую-нибудь коллекцию.
При возникновении события, sender будет как раз тем клиентом, который вызвал событием. Ищете этот клиент в коллекции и определяете нужный прогресс бар.
1
zombie
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 29
18.05.2012, 00:54  [ТС] #5
Цитата Сообщение от turbanoff Посмотреть сообщение
ProgressChanged скорее всего генерирует сам WebClient, поэтому можно сохранить их в какую-нибудь коллекцию.
При возникновении события, sender будет как раз тем клиентом, который вызвал событием. Ищете этот клиент в коллекции и определяете нужный прогресс бар.
Отлично, спасибо, все работает.
0
18.05.2012, 00:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2012, 00:54
Привет! Вот еще темы с ответами:

Как определить из какой подсети ip адрес? - C#
Здравствуйте. Собственно есть сети: 10.0.0.0/24 10.0.1.0/24 10.0.2.0/25 ,и есть ip 10.0.2.75. вопрос в заголовке.

.NET 4.x DownloadFileAsync завершает цикл - C#
Не могу понять в чем дело. Если запускать не пошагово, то ,после i = (max_count_wallpapers = 1347) цикл завершается, а если пошагово, то...

DownloadFileAsync - Как сохранять файл по определенному пути? - C#
client.DownloadFileAsync(new Uri("ссылка"),"USERPROFILE/Downloads") Что тут не правильно USERPROFILE/Downloads, и как...

Определить, какой сейчас век, и сколько лет прошло с начала текущего века - C++
Помогите, пожалуйста, решить задачу и подскажите, где можно вообще рассмотреть решение задач на тему ветвление, логические операции, цикл с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru