ASP.NET webforms异步操作阻止UI线程

0 c# asp.net webforms async-await

我正在尝试做我认为应该相对简单的事情,但我的UI不会马上更新.

我需要做的是当点击一个按钮时我需要更新一个标签,说明作业已经启动,启动该作业,然后在作业完成时更新标签.然而,UI总是阻塞,直到工作完成,所以我在等待工作完成时无法做任何事情.有关如何解决此问题的任何想法?

嘿,我的一些代码:

protected async void TurnOff_Click(object sender, EventArgs e) {
  Label1.Text = "Started";

            Label1.Text = await Task.Run<string>(() => SimulateData());
}
Private string SimulateData() {
    Thread.Sleep(5000);  //I have tried other methods that will do work for awhile and not freeze the thread as well (neither work)
    return "finished";
}
Run Code Online (Sandbox Code Playgroud)

无论我如何运行它似乎总是阻止它直到作业完成然后它将让我用UI做事情.我需要它在作业启动后自动返回,然后在完成后更新UI.

Dav*_*vid 8

这只是在服务器端异步发生.Web服务器在向客户端提供任何内容之前仍在等待响应完成.即使这确实按预期工作......你真的期望它能如何工作?它会为您的浏览器提供响应,然后是什么?如何更新浏览器中已有的响应?

为了在客户端和服务器之间进行异步操作,您需要使用AJAX或Web套接字或一些异步通信介质.您描述该过程的方式甚至听起来像SignalR这样的工具设计的理想场景维护浏览器和服务器端代码之间的连接,并通知浏览器服务器端消息.(如果可用的话,通过网络套接字,或者在必要时它会透明地降级为长轮询.)