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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2010, 21:49   #1
serres
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 77
По умолчанию ProgressBar, скачивания файла по url

Хочу сделать так чтобы на прогрессбаре отображалась прогресс скачивания файла.
вот мой код но он не работает.

private void backgroundWorker1_ProgressChanged(o bject sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;

}


public void DownloadFileInfo(Uri urlFileInfo, string dirFileInfo)
{
WebClient webClient = new WebClient();
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(backgrou ndWorker1_RunWorkerCompleted);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler (backgroundWorker1_ProgressChanged) ;
webClient.DownloadFile(urlFileInfo, dirFileInfo + "\\AutoUpdateServerFile.txt"); //выполняет нормально
}

Последний раз редактировалось serres; 23.02.2010 в 21:56.
serres вне форума Ответить с цитированием
Старый 24.02.2010, 10:28   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Посмотри как сделано здесь:
http://www.dreamincode.net/forums/showtopic115491.htm
Hollander вне форума Ответить с цитированием
Старый 10.11.2010, 08:59   #3
tigrend
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 31
Печаль

Цитата:
Сообщение от Hollander Посмотреть сообщение
Посмотри как сделано здесь:
http://www.dreamincode.net/forums/showtopic115491.htm
У меня возникло продолжение вопроса. Я использую DownloadStringAsync (мне как бы с файлами возиться неохота да и ни к чему). И эта зараза до тех пор пока всё не скачает выдаёт в качестве TotalBytesToReceive значение -1 (На всякий случай. Я качаю просто интернет ресурс а не файл. Например URI uri="http://www.programmersforum.ru"). А как докачает всё, так выдаёт реальный размер. Подскажете как быть?
tigrend вне форума Ответить с цитированием
Старый 10.11.2010, 16:08   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от tigrend Посмотреть сообщение
У меня возникло продолжение вопроса. Я использую DownloadStringAsync (мне как бы с файлами возиться неохота да и ни к чему). И эта зараза до тех пор пока всё не скачает выдаёт в качестве TotalBytesToReceive значение -1 (На всякий случай. Я качаю просто интернет ресурс а не файл. Например URI uri="http://www.programmersforum.ru"). А как докачает всё, так выдаёт реальный размер. Подскажете как быть?
Никак. Ставьте анимацию ожидания типа "кольцо" (вечный цикл), так делают браузеры к примеру.
BOBAH13 вне форума Ответить с цитированием
Старый 10.11.2010, 20:49   #5
tigrend
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 31
По умолчанию

Отнюдь не никак. Ведь посмотрим на браузер Мозилла Файрафокс. Он отображает сначала процесс загрузки текстовой части (то что нас интересует) и потом уже всякие финтифлюшки типа флешей поштучно (нам не интересно).

Я, конечно, крепко подозреваю, что он писался на QT, а никак не на VS .NET, но ведь у него в основе всё равно лежит С++, а значит способ должен быть.

А кольцо неинтересно, поскольку сделано давно (можно конечно примерно прикинуть сколько страница весит сейчас, но тогда для каждого из трёх считываемых сортов страниц свой обработчик, а это неуниверсально получается. да и страницы-подлецы имеют свойство меняться кардинально).
tigrend вне форума Ответить с цитированием
Старый 11.11.2010, 07:38   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну тогда подключайтесь через сокеты, шлите GET запрос и потом ожидайте/получайте response по байтово, вот тогда и формируйте процесс загрузки.
BOBAH13 вне форума Ответить с цитированием
Старый 11.11.2010, 13:00   #7
tigrend
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 31
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Ну тогда подключайтесь через сокеты, шлите GET запрос и потом ожидайте/получайте response по байтово, вот тогда и формируйте процесс загрузки.
Вот что сосбственно вышло из запроса GET. Там красненьким отмечено. Какие ещё мысли?
Изображения
Тип файла: jpg Length.JPG (91.4 Кб, 147 просмотров)
tigrend вне форума Ответить с цитированием
Старый 11.11.2010, 15:08   #8
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

----------------------------

Последний раз редактировалось Casper-SC; 11.11.2010 в 15:28. Причина: Не в тему
Casper-SC вне форума Ответить с цитированием
Старый 11.11.2010, 17:02   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от tigrend Посмотреть сообщение
Вот что сосбственно вышло из запроса GET. Там красненьким отмечено. Какие ещё мысли?
Вы читали что я писал? Я писал использовать сокеты, а не готовые обвертки, решения, типа HTTPWebRequest!

http://www.google.com/search?q=С%23+socket

UPD:
Цитата:
Не надо на меня кричать.
Странно, я даже сидя дома не кричал, с чего вы решили что я кричу? Я просто удивлен, я говорю о сокетах, а вы показываете что у вас не вышло с обверткой http web request. Пробуйте с сокетами, должно выйти, т.к. по идеи вы будете сами записывать в сокет (send WInSockAPI) данные. Собственно в C# я не юзал сокеты на прямую, но в C++ на чистом WinSock, да. Думаю должно быть тоже самое.

UPD:
Ну вернее Recv вы ведь качаете данные. Затуркался вообще уже.

Последний раз редактировалось BOBAH13; 11.11.2010 в 17:33.
BOBAH13 вне форума Ответить с цитированием
Старый 11.11.2010, 17:24   #10
tigrend
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 31
По умолчанию

Ну знаете. Я думал что запрос ему пофигу как сформировать вот и решил попробовать.
И вообще я не мог в одно время изучать как обращаться с запросами и с сокетами. Поэтому я решил начать с запросов. А уже потом заняться сокетами.
И вообще вы же видите, что я в вопросах программирования вообще ни разу не любитель даже. Не надо на меня кричать (
Цитата:
HTTPWebRequest!
вот восклицательный знак значит кричите) (я уверен что мысленно вы высказали мне самое плохое что может быть. потому что ничто так не раздражает других людей как то когда их не слушают.).
А вы знаете почему такая разница большая между использованием сокетов и просто request'ов?

Последний раз редактировалось tigrend; 11.11.2010 в 18:35. Причина: интересно
tigrend вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ProgressBar для скачивания KoBRaAndrey Работа с сетью в Delphi 5 04.04.2011 23:52
Скачивания файла designer999 Работа с сетью в Delphi 15 22.02.2010 22:21
открытие файла progressbar Михаил Юрьевич Общие вопросы Delphi 2 05.10.2009 21:46
проблема с функцией скачивания файла из интернета ZeitGeist7 Работа с сетью в Delphi 2 27.02.2009 19:43
Копирование файла и progressbar VenMaster Компоненты Delphi 8 26.05.2008 21:44