Asp.net

asp.net webform中如何使用async/await實現非同步頁面?

  • February 4, 2017

我們現在可以在 ASP.NET MVC 4 中使用 async/await 關鍵字。

public async Task<ActionResult> TestAsync()
{
   WebClient client = new WebClient();
   return Content(await client.DownloadStringTaskAsync("http://www.google.com"));
}

但是如何在 ASP.NET WebForms 中使用它呢?

一種簡單的方法是讓您的事件處理程序async。首先,將Async="true"參數添加到@Page指令中,然後您應該能夠編寫非同步事件處理程序,如下所示:

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);
}

我說“應該能夠”是因為我自己還沒有真正嘗試過。但它應該工作。

**更新:**這不適用於Page_Load請參閱此 MSDN 論壇主題),但應該適用於其他事件,例如按鈕點擊。

**更新:**這確實適用Page_Load於 ASP.NET 4.5。此外,他們還添加了檢查您是否不正確地使用async事件處理程序。有關詳細資訊,請參閱此影片。

引用自:https://stackoverflow.com/questions/9561632