async和await不起作用

时间:2015-03-26 12:31:17

标签: asp.net asynchronous async-await sendasynchronousrequest

我正在尝试在asp.net中使用async和await。为简单起见,我的目标是异步调用方法,一旦返回,就更新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方法。所以我相信这会成为同步电话,而不是异步电话。

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

2 个答案:

答案 0 :(得分:1)

正如我在博客中描述的async does not change the HTTP protocol。考虑它的一种方法是await产生ASP.NET运行时,到浏览器。

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

答案 1 :(得分:0)

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

这些不应该被误认为异步Web请求。这可以使用ajax来实现。