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

C# ASP.NET webforms异步操作阻止UI线程,c#,asp.net,webforms,async-await,C#,Asp.net,Webforms,Async Await,我正在尝试做我认为应该相对简单的事情,但我的UI并没有立即更新 我需要做的是,当单击按钮时,我需要更新一个标签,说明作业已开始,启动该作业,然后在作业完成时更新标签。但是,UI总是阻塞,直到作业完成,所以在等待作业完成时,我无法执行任何操作。有没有关于如何解决这个问题的想法 嘿,这是我的一些代码: protected async void TurnOff_Click(object sender, EventArgs e) { Label1.Text = "Started";

我正在尝试做我认为应该相对简单的事情,但我的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";
}

无论我如何运行,它似乎总是会阻塞,直到作业完成,然后它将允许我使用UI执行操作。我需要它在作业开始时自动返回,然后在作业完成时更新UI。

这只在服务器端异步发生。web服务器仍在等待响应完成,然后再向客户端交付任何内容。即使这确实如你所期望的那样有效。。。你到底希望它如何工作?它会向你的浏览器发送响应,然后呢?它将如何更新浏览器中已有的响应


为了在客户端和服务器之间执行异步操作,您需要使用AJAX或web套接字或某种异步通信介质。。您描述该过程的方式甚至听起来像是类似的理想场景,这是一种旨在维护浏览器和服务器端代码之间的连接并向浏览器通知服务器端消息的工具。通过web套接字(如果可用),或在必要时透明地降级为长轮询。

web应用程序服务器代码ASP.NET中没有UI线程。UI是浏览器,不运行.NET代码。