/ / Pobieranie programu obsługi zdarzeń WebCliverCompleted nigdy nie było wywoływane - c #, .net, webclient

Polecenie obsługi zdarzenia DownloadStringCompleted użytkownika WebClient nigdy nie było wywoływane - c #, .net, webclient

Próbuję wykonać asynchroniczne żądanie HTTP GET przy użyciu klienta WebClient, jednak zarejestrowane wywołanie zwrotne nie jest wywoływane. Próbowałem również z synchronizacją jednego i działało dobrze. Co ja robię źle?

WebClient asyncWebRequest;
public AsyncWebRequest(Uri url)
{
asyncWebRequest = new WebClient();
url = new Uri("http://www.google.com/");
// string test = asyncWebRequest.DownloadString(url);  // this works
asyncWebRequest.DownloadStringCompleted += new DownloadStringCompletedEventHandler(asyncWebRequest_DownloadStringCompleted);
asyncWebRequest.DownloadStringAsync(url);
}

void asyncWebRequest_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
throw new NotImplementedException();
}

Odpowiedzi:

2 dla odpowiedzi № 1

Może dlatego, że rozporządzasz WebClient przed zakończeniem pobierania. Wykonanie kodu nie zatrzyma się asyncWebRequest.DownloadStringAsync(url); i wyrzucasz WebClient obiekt zamykając instrukcję using.

spróbuj zlikwidować WebClient na asyncWebRequest_DownloadStringCompleted.

wyniki

wprowadź opis obrazu tutaj


0 dla odpowiedzi nr 2

Najprostszym rozwiązaniem jest dodanie Console.ReadKey() na końcu AsyncWebRequest(url) metoda. Tą drogą asyncWebRequest.DownloadStringAsync(url) będzie w stanie odzyskać dane.