Sto cercando di usare Async e attendono quando si effettua una richiesta web e sto trovando che ottiene mai oltre la linea attendono. Lo faccio da un'app Metro, ma ho anche verificato il problema in un'app winforms.Async e aspettano 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(); ;
}
Se io non uso attendere e invece eseguo un'attesa sincrono, funziona, ma ho bisogno di questo per l'esecuzione in modo asincrono.
Quello che mi manca in questo codice che sta causando l'attendono per non tornare mai più?
Grazie. E 'stato esattamente questo. Grazie per il link, è molto utile. –
@Stephen, grazie per i post del blog! Domanda di chiarimento: se uso '.ConfigureAwait (false)' nella mia lib (fondamentalmente un WebClient), posso quindi usare '.Result' quando lo si chiama? Sembra funzionare, ma non so cosa accadrà quando lo libererò in natura. – Brad
@Brad: Sì, a condizione che il metodo asincrono che stai chiamando faccia la stessa cosa. Tuttavia, non è una buona pratica usare 'Result'; ci sono sempre opzioni migliori. –