Nie działa DownloadStringAsync

0

Witam!

Wyczytałem, że aby program podczas działania nie zamrażał się, należy skorzystać z DownloadStringAsync. Ale w moim przypadku Nie za bardzo działa. Robię np. tak:

            System.Net.WebClient client = new WebClient();
            client.DownloadStringAsync(new Uri("http://wp.pl/index.htm"));

I pomimo tego aplikacja się zamraża na kilka sekund. Coś jest nie tak?

Dodam że korzystam z VS2008 na windows7, i .NET w wersji 3.5 (na 3.0 i 2.0 to samo jest)...

0

z tego co mi się wydaje to w momencie przejścia procedury nic nie będzie w kliencie poza zmienioną flagą isbusy. Można zrobić coś takiego

System.Net.WebClient client = new System.Net.WebClient();
client.DownloadStringAsync(new Uri("http://wp.pl/index.htm"));
while (client.IsBusy) ;
// i dalej to co masz do zrobienia

ale to nie rozwiązuje Twojego problemu bo formatka będzie zawieszona:/

0
.::CYMES::. napisał(a)

while (client.IsBusy) ;

nie no.. kurcze.. ciekawe czemu nadal blokuje GUI..

a moze by tak przynajmniej minimalnie pomyslec i zamiast puszczac natychmiast 'nieskonczonego' while'a, sprawdzic flage IsBusy za jakiś czas ? -> ot, chocby banalnym timerem, etc.

poza tym Panowie drodzy, DownloadStringAsync ma to siebie, ze potrafi was poinformowac JAK OPERACJA SIE ZAKONCZY. to jest podstawa.. jakim cudem przegapiliscie event DownloadStringCompleted, przeciez jest tuz pod *Async tej metody na liscie autocomplete'a??

wystarczy czytac czytac czytac czytac czytac..
http://msdn.microsoft.com/en-us/library/ms144202(VS.80).aspx

method does not block the calling thread while downloading the resource. To download a resource and block while waiting for the server's response, use the DownloadString method. When the download completes, the DownloadStringCompleted event is raised. Your application must handle this event to receive notification. The downloaded string is available in the Result property

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