异步和等待不起作用

async and await is not working

我正在尝试在 asp.net 中使用异步和等待。为简单起见,我的 objective 是异步调用一个方法,一旦 return,就更新 UI 上标签中的数据。 这里是default.aspx

<form id="form1" runat="server">
        <div>
            <asp:Button runat="server" Text="click me" OnClick="asyncbtn_Click" id="asyncbtn" /><br />
             <asp:TextBox runat="server" /><br />
            <asp:Label runat="server" Text="[Result label]" ID="resultLabel"/>
            <asp:Label runat="server" Text="[Result label]" ID="Label1"/>
        </div>
    </form>

文件背后的代码...

protected void asyncbtn_Click(object sender, EventArgs e)
        {
            RegisterAsyncTask(new PageAsyncTask(DoSomethingAsync));
        }  

        public async Task<int> DoSomethingAsync()
        {
            await Task.Delay(10000);
            resultLabel.Text = 20.ToString();
            await Task.Delay(5000);
            Label1.Text = 30.ToString();
            return 0;
        }

因此,当我单击按钮时,我的浏览器会等待整个 DoSomethingAsync 方法完成。所以我相信这将成为同步调用而不是异步调用。

谁能告诉我这里出了什么问题。

Async 和 Await 用于并行处理多个网络请求。一旦请求到达服务器并开始与其他传入的 Web 请求竞争,这些方法就会生效。

这些不应该被误认为是异步网络请求。这可以使用 ajax.

来实现

正如我在我的博客中所描述的,async does not change the HTTP protocol。一种思考方式是 await 屈服于 ASP.NET 运行时, 而不是 屈服于浏览器。

有关详细信息,请参阅我的 MSDN article on async ASP.NET