我在跨线程操作方面遇到问题。
我有以下方法
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);
我不明白为什么我仍然遇到这个异常
最佳答案
定义一个委托(delegate),例如
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});
}
}
关于C# 跨线程操作调用后无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157692/