c# windows-8 windows-runtime httpwebrequest async-await

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:

  1. No bloquee en código async ; async todo el camino hacia abajo.
  2. 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?