ASP.Net:在Page_Load中调用异步方法

时间:2017-11-17 00:13:11

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

我有这个API客户端,它有一个send方法,用于将我的对象发布到Web API服务并返回一个类型为ReturnedResults的对象。 现在我需要在ASP.net page_load事件中运行此post方法。 我在这里看到过类似的例子,但我需要的是从异步方法中获取返回对象。

我知道我应该使用

PageAsyncTask t = new PageAsyncTask(APIService.Send("test"));

但是我有两个问题,首先PageAsyncTask不接受我的Send方法作为有效的Task类型,我猜这是因为我的方法返回Task of Task类型所以它抱怨它无法将Task转换为System.Func

另外,如果成功执行了ReturnedResults的对象,又如何从中获取它?

1 个答案:

答案 0 :(得分:6)

仅仅因为你无法等待PageAsyncTask的结果并不意味着任务本身无法启动你可以等待的更多功能。您可以利用此功能来加载异步页面。

public void Page_Load(object sender, EventArgs e)
{
    RegisterAsyncTask(new PageAsyncTask(PageLoadAsync));
}

public async Task PageLoadAsync()
{
    //perform your actions here, including calling async methods and awaiting their results

    Task<string> downloadTask = new WebClient().DownloadStringTaskAsync("http://www.example.com");

    TextBox1.Title = "We can do some actions while waiting for the task to complete";

    TextBox2.Title = await downloadTask;
}

确保您的网页标记为异步。

<%@ Page Language="C#" CodeBehind="Default.aspx.cs" Inherits="Default" Async="true" %>