我有这个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的对象,又如何从中获取它?
答案 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" %>