gpt4 book ai didi

c# - Page_Load() 可以异步吗

转载 作者:行者123 更新时间:2023-11-30 15:22:17 24 4
gpt4 key购买 nike

Page_Load() 方法可以是async 吗?我问好像我已经这样声明了

protected void Page_Load()

一切都按预期加载。如果我这样声明它

protected async void Page_Load()

Page_Load() 断点未命中,catch() block 也未命中。

现在我试图将我的 Page_Load() 方法设置为 async 以便在页面完全呈现之前执行 3 个不同的存储过程。如果我没有 Page_Load() 方法作为 async,我会得到这个编译错误:

The await operator can only be used with an async method.

我的代码是这样的。

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

关于c# - Page_Load() 可以异步吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35899800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com