在Page_Load asp c#中调用异步方法

时间:2017-05-09 03:29:29

标签: c# asp.net asynchronous async-await

您好我是新手,在异步方法中使用 async 等待, 我希望将page_load中发生的几个调用称为异步调用。

这是代码..

 protected void Page_Load(object sender, EventArgs e)
 {
    string UrlData = ReadAsync().Result;

    //continuation code..
 }

 protected async Task<string> ReadAsync(object sender, EventArgs e)
 {
    Task<string> T = getFinalValue();
    await T;

    return T.Result;
 }

 protected async Task<string> getFinalValue(object sender, EventArgs e)
 {
    //my code to create string
     return "created string";
 }

1.i需要了解这种方法是否正确?

2.在同步方法中使用ReadAsync().Result是正确的还是导致其他任何问题?

3.我之间需要ReadAsync方法来提供此服务,还是可以直接在getFinalValue内使用page_load以及如何使用它?

4.我可以将page_load保持为同步还是异步?哪个更好?

任何回复都会有所帮助。

1 个答案:

答案 0 :(得分:2)

经典ASP.NET使用异步并不能很好地发挥作用,你需要将它改为像......

protected void Page_Load(object sender, EventArgs e)
{
    RegisterAsyncTask(new PageAsyncTask(ReadAsync));
}

protected async Task ReadAsync()
{
    string UrlData = await getFinalValue();

    //continuation code..
}

protected async Task<string> getFinalValue()
{
    //my code to create string
     return "created string";
}

请参阅Scott Hanselman关于此主题的帖子......

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