Estoy tratando de utilizar Async y Await al hacer una solicitud web y estoy descubriendo que nunca pasa de la línea de espera. Lo hago desde una aplicación de Metro, pero también verifiqué el problema en una aplicación de winforms.Async y Await con HttpWebRequest.GetResponseAsync
public async Task<string> DoSomething()
{
string url = "http://imgur.com/gallery/VcBfl.json";
HttpWebRequest request = HttpWebRequest.CreateHttp(url);
var ws = await request.GetResponseAsync();
return ws.ResponseUri.ToString(); ;
}
Si yo no uso la espera y en su lugar realizo una espera síncrona, funciona, pero necesito esto para ejecutar de forma asincrónica.
¿Qué me falta en este código que está causando la espera de nunca volver?
Gracias. Eso fue exactamente eso. Gracias por el enlace, es muy útil. –
@Stephen, ¡gracias por las publicaciones en el blog! Pregunta aclaratoria: si uso '.ConfigureAwait (false)' en mi lib (básicamente un WebClient), ¿puedo usar '.Result' cuando lo llamo? Parece que funciona, pero no sé qué sucederá cuando lo deje en libertad. – Brad
@Brad: Sí, siempre que el método asíncrono que está llamando haga lo mismo. Sin embargo, no es una buena práctica usar 'Result'; siempre hay mejores opciones. –