无法在winforms中设置标签值

时间:2015-05-20 05:34:03

标签: c# asp.net winforms wcf

我正在尝试在来自WCF回调的标签中显示消息。我的标签是在Windows窗体应用程序中。 问题是触发回调时标签没有设置。我试图使用消息框而不是标签,它的工作原理。没有什么代码可以展示。这是回调函数。

    public void GetData(string message)
    {
        label1.Text = message;      // This doesn't work
        MessageBox.Show(message);   // This works fine
    }

任何人都可以告诉为什么标签没有在回调函数中设置。

1 个答案:

答案 0 :(得分:0)

回调事件在非GUI 线程上触发,您可以访问创建它们的GUI线程中的 GUI 控件。您可以将Control.Invoke与MethodInvoker一起使用来访问回调事件处理程序中的控件(label)。

public void GetData(string message)
{
    label1.Invoke((MethodInvoker) delegate
    {
         label1.Text = message;     
    });
    MessageBox.Show(message);   
}