C#交叉线程操作在调用后无效

时间:2013-04-22 22:19:17

标签: c# multithreading invoke

我遇到了跨线程操作的问题。

我有以下方法

 private void UpdateLabel(string text)
    {
        if (this.richTextRxMessage.InvokeRequired)
        {
            this.Invoke(new Action(() => this.UpdateLabel(text)));
            return;
        }
        else
        {
            this.richTextRxMessage.AppendText(text);
        }
    }

我称之为

UpdateLabel(richTextRxMessage.Text + szData);

我不明白为什么我仍然会得到这个例外

1 个答案:

答案 0 :(得分:2)

定义类似

的委托
  public delegate void UpdateFormText(string text);

并改变你的方法,如

private void UpdateLabel(string text)
{
    if (!this.richTextRxMessage.InvokeRequired)
    {
        this.richTextRxMessage.Text=text;

    }
    else
    {
        var s = new UpdateFormText(UpdateLabel);
        Invoke(s, new object[] { text});
    }
}