使用来自引发事件的线程的消息更新屏幕(ASP.NET)

时间:2010-12-21 11:49:16

标签: c# asp.net vb.net multithreading

我有一个很长的运行过程,我从一个线程开始。这会通过消息引发事件来说明它正在做什么。

如何使用这些消息更新屏幕上的标签? (如果标签更容易,则标签位于更新面板中。)

如果无法做到这一点,您可以建议更好的方式吗?

3 个答案:

答案 0 :(得分:3)

页面请求完成后,服务器对请求浏览器没有明确的知识或连接,因此您无法轻松地将响应推送给用户。最简单的方法是使用标识符以某种方式保留消息,然后通过服务或CallBack函数公开消息,您可以使用Ajax计时器来调用服务并相应地更新UI。

答案 1 :(得分:1)

是的,你可以。创建一个具有参数的方法(要显示的消息字符串)。像:

private void SetLabelText(string message)
{
            if (label.InvokeRequired)
            {
                Invoke(new MethodInvoker(() => SetLabelText(message)
                           ));
            }
            else
            {
                label.Text = message;
            }
}

在事件处理程序中使用此方法。

答案 2 :(得分:0)

使用后台工作程序更新UI非常有用 link text