簡體   English   中英

Page_Load()是否可以異步

[英]Can Page_Load() Be Async

Page_Load()方法可以async嗎? 我問我是否已經聲明了

protected void Page_Load()

一切都應該加載。 如果我這樣宣布

protected async void Page_Load()

Page_Load()斷點未命中, catch()塊也未命中。

現在,我試圖將我的Page_Load()方法設置為async ,以便在完全渲染頁面之前執行3個不同的存儲過程。 如果我沒有async Page_Load()方法, async收到此編譯錯誤:

等待操作符只能與異步方法一起使用。

我的代碼就是這樣。

private DataSet ds1 = new DataSet();
private DataSet ds2 = new DataSet();
private DataSet ds3 = new DataSet();

protected async void Page_Load(object sender, EventArgs e)
{
 if (!IsPostBack)
 {
    var task1 = GetStoreInfo();
    var task2 = GetSalespersonInfo();
    var task3 = GetManagerInfo();
    await System.Threading.Tasks.Task.WhenAll(task1, task2, task3);
    PopulateAll();
 }

}

async System.Threading.Tasks.Task<DataSet> GetStoreInfo()
{
  ds1 = RunStoredProcedureToReturnThisData();
  return ds1;
}

async System.Threading.Tasks.Task<DataSet> GetSalespersonInfo()
{
  ds2 = RunStoredProcedureToReturnThisData();
  return ds2;
}

async System.Threading.Tasks.Task<DataSet> GetManagerInfo()
{
  ds3 = RunStoredProcedureToReturnThisData();
  return ds3;
}

protected void PopulateAll()
{
  //Bind the different returned datasets
}

Scott Hanselman具有在此處將異步與ASP.NET生命周期事件一起使用的魔力

http://www.hanselman.com/blog/TheMagicOfUsingAsynchronousMethodsInASPNET45PlusAnImportantGotcha.aspx

沒有ASP.NET設計不會使用任何形式的Task Await調用此方法,因此它不能是Asnyc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM