Un modo semplice è quello di rendere i gestori di eventi solo async
. In primo luogo, aggiungere il parametro Async="true"
alla direttiva @Page
, e allora si dovrebbe essere in grado di scrivere i gestori di eventi asincroni in quanto tale:
protected async void Page_Load(object sender, EventArgs e)
{
var client = new WebClient();
var content = await client.DownloadStringTaskAsync("http://www.google.com");
Response.Write(content);
}
Dico "dovrebbe essere in grado di" perché non ho davvero provato questo io stesso . Ma dovrebbe funzionare.
Aggiornamento: Questo fa non lavoro per Page_Load
(vedi this MSDN forum thread), ma dovrebbe funzionare per altri eventi come i clic sui pulsanti.
Aggiornamento: Questo fa lavoro per Page_Load
in ASP.NET 4.5. Inoltre, hanno aggiunto dei controlli se si utilizza erroneamente un gestore di eventi async
. See this video for details.
fonte
2012-03-05 13:17:51
E l'ho provato, non funziona. – Dozer
Funziona correttamente! – Dozer
Se la parola chiave await non stava notificando la classe Page sull'operazione asincrona in Page_Load, perché ciò sarebbe diverso per i clic sui pulsanti? Ma grazie per l'aggiornamento che questo è ora supportato. – Michael