We can now use the async/await key words in ASP.NET MVC 4.
public async Task<ActionResult> TestAsync()
{
WebClient client = new WebClient();
return Content(await client.DownloadStringTaskAsync("http://www.google.com"));
}
But how to use it in ASP.NET WebForms?
According to http://www.hanselman.com/blog/TheMagicOfUsingAsynchronousMethodsInASPNET45PlusAnImportantGotcha.aspx the only reliable way to use async in web forms is to call Page.RegisterAsyncTask.
.
One easy way is to just make your event handlers
async
. First, add theAsync="true"
parameter to the@Page
directive, and then you should be able to write async event handlers as such:I say "should be able to" because I haven't actually tried this out myself. But it should work.
Update: This does not work for
Page_Load
(see this MSDN forum thread), but should work for other events such as button clicks.Update: This does work for
Page_Load
in ASP.NET 4.5. Also, they added checks if you improperly use anasync
event handler. See this video for details.