我遇到了跨线程操作的问题。
我有以下方法
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);
我不明白为什么我仍然会得到这个例外
答案 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});
}
}