C# Can';t更新System.Web.UI.WebControls.Label';从线程事件中删除文本
在我的C#ASP.NET项目中,我有一个后台线程,可以进行一些处理。我想在后台进程开始和结束时向用户显示。为此,在我的背景代码中:C# Can';t更新System.Web.UI.WebControls.Label';从线程事件中删除文本,c#,asp.net,multithreading,C#,Asp.net,Multithreading,在我的C#ASP.NET项目中,我有一个后台线程,可以进行一些处理。我想在后台进程开始和结束时向用户显示。为此,在我的背景代码中: public static void RefreshNavigationElements() { TimeInfoEventArgs timeInformation = new TimeInfoEventArgs("WPALoading has started"); WorkProductAgreements.OnSecondChange(timeI
public static void RefreshNavigationElements()
{
TimeInfoEventArgs timeInformation = new TimeInfoEventArgs("WPALoading has started");
WorkProductAgreements.OnSecondChange(timeInformation);
WPA_Supers.Clear();
PopulateWPAs();
timeInformation.myMessage = "WPALoading has ended";
WorkProductAgreements.OnSecondChange(timeInformation);
}
正在侦听事件的代码:
public void TimeHasChanged(TimeInfoEventArgs ti)
{
Label11.Text = ti.myMessage;
System.Diagnostics.Debug.WriteLine(ti.myMessage);
}
在调试器中单步执行显示,TimeHasChanged
函数在适当的时间被调用,并在ti
中包含正确的文本。Debug.WriteLine
命令输出正确的消息。但是标签11
文本不会在页面上更改
我对事物的理解不是很深刻,我认为我只需要刷新页面,或者类似的东西,但我不能,就我的一生而言,想出如何做到这一点
我已尝试将
标签
放在更新面板
中。每次调用TimeHasChanged
时,我都尝试创建一个新标签。但我的任何尝试似乎都没有带来任何不同。任何帮助都将不胜感激。在ASP.NET中,当浏览器请求页面时,服务器启动一个线程来呈现页面并将其发送回浏览器。呈现页面后,线程完成,所有相关的后台工作人员也完成。此时页面将按原样发送回浏览器。因此,除非您显式地等待后台工作程序完成,否则它将永远不会完成并更新页面内容
您可以在此处使用一些技术: