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 № 1Talvez 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
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.