c# - Async y espera con HttpWebRequest.GetResponseAsync
windows-8 windows-runtime (1)
Sospecho que más arriba en tu pila de llamadas, estás llamando Wait
o Result
en la Task
devuelta. Esto causará un punto muerto, como describo en mi blog .
Siga estas mejores prácticas para evitar el punto muerto:
- No bloquee en código
async
;async
todo el camino hacia abajo. - En sus métodos de "biblioteca", use
ConfigureAwait(false)
.
Estoy tratando de usar Async y Await cuando hago una solicitud web y me doy cuenta de que nunca pasa la línea de espera. Estoy haciendo esto desde una aplicación de Metro, pero también verifiqué el problema en una aplicación de winforms.
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 no uso esperar y en su lugar realizar una espera síncrona, funciona, pero necesito esto para ejecutar de forma asíncrona.
¿Qué me falta en este código que está causando que la espera nunca vuelva?