异步和等待不起作用
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。
我正在尝试在 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。