/ / O manipulador de eventos DownloadStringCompleted do Webclient nunca foi chamado - c #, .net, webclient

O manipulador de eventos DownloadStringCompleted do Webclient nunca foi chamado - c #, .net, webclient

Eu estou tentando fazer uma solicitação HTTP GET assíncrona usando Webclient, no entanto, o retorno de chamada registrado nunca é chamado. Eu também tentei com a sincronização, e funcionou bem. O que estou fazendo de errado?

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();
}

Respostas:

2 para resposta № 1

Talvez porque você está descartando WebClient antes de terminar o download. A execução do código não é interrompida asyncWebRequest.DownloadStringAsync(url); e você está descartando WebClient objeto fechando a instrução using.

tente eliminar o WebClient em asyncWebRequest_DownloadStringCompleted.

resultados

insira a descrição da imagem aqui


0 para resposta № 2

A solução mais simples é adicionar Console.ReadKey() no fim de AsyncWebRequest(url) método. Deste jeito asyncWebRequest.DownloadStringAsync(url) será capaz de recuperar dados.