HttpWebResponse i ProgressBar

0

Witam. Otóż potrzebuję napisać program który będzie sczytywać strony www do html do pliku. Ze względu na to, że czasami trwa to chwilę, chciałbym zrobić progressBar ale nie bardzo wiem jak to podpiąć. Będę wdzięczny za pomoc. Poniżej kod:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(a); // a - adres url
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Stream s = res.GetResponseStream();
StreamReader sr = new StreamReader(s);
return sr.ReadToEnd();
0

Zamiast pobierać od razu wszystko, pobierasz np. po 4KB danych i aktualizujesz progressBar, tyle :)

Tylko trzeba pamiętać o wywołaniu Application.DoEvents (); albo aktualizować w osobnym wątku.

0

No dobra. Ale jak mogę sprawdzić ile kB mi pobiera i jak zrobić żeby pobierał określoną ilość tekstu ?

0

Latwiej Ci bedzie uzyc WebClient.DownloadStringAsync i podpiac sie pod zdarzenia DownloadStringCompleted oraz DownloadProgressChanged. Chociaz nie wiem do czego wykorzystujesz HttpWebRequest. Nie mozna pobrac tylko czesci tekstu, bo wysylasz żądanie do serwera a on odpowiada na nie w calosci. Musialbys zmienic kod serwera, by odpowiadal inaczej.

0

To by zdecydowanie ułatwiło sprawę. Tylko że ja używam VS 2003 1.1 a co za tym idzie, w klasie WebClient nie ma metod DownloadString ani DownloadStringAsync....

0

No to troche gorzej, ale moze to pomoze? Czemu 1.1?

0

Bo mam full licencję na VS2003, a to program komercyjny. A swoją drogą czy istnieje możliwość zaimplementowania klasy WebClient ? Można ją gdzieś pobrać , jakaś dll-lka ? będę wdzięczny :)

0

Mozliwosc zaimplementowania zawsze istnieje - znaczy piszesz sam :P Poszukaj moze na codeproject, moze ktos sie pokusil o napisanie takiej klasy zanim weszla do frameworka. Do .net 2.0 i 3.0-3.5 masz darmowe wersje Visual Express, rowniez dla komercyjnych produktow.

1 użytkowników online, w tym zalogowanych: 0, gości: 1