簡體   English   中英

ASP.Net:在 Page_Load 中調用異步方法

[英]ASP.Net: Call an async method in Page_Load

I have this API client which has a send method used to post my object to a Web API service and return an object of type ReturnedResults. 現在我需要在 ASP.net page_load 事件中運行這個 post 方法。 我在這里看到了類似的例子,但是我需要的是從我的異步方法中得到我的返回 object。

我知道我應該使用

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

但是我有兩個問題,首先 PageAsyncTask 不接受我的 Send 方法作為有效的 Task 類型,我想這是因為我的方法返回 Task 類型的 Task 所以它抱怨它不能將 Task 轉換為 System.Func

另外,一旦成功執行,我怎樣才能從中獲得 ReturnedResults 的 object?

僅僅因為您無法等待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" %>

從 VS2022 開始,您需要使用

Page.RegisterAsyncTask(....

暫無
暫無

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

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