我正在尝试在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方法。所以我相信这会成为同步电话,而不是异步电话。
谁能告诉我这里有什么问题。
答案 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来实现。