线程问题,高手进 急

smaworm 2008-02-21 10:11:32
正在做一个串口通信类的项目,我在窗口添加了一个SerialPort类型的控件serialPort1,
当接接受到某类信息的时候(使用serialPort1_DataReceived 事件),在窗口上的一个RichTextBox类型控件richTextBox1
控件中显示某些内容,现假定为“aaa”
但是接受到信息的时候
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{

richTextBox1.Text += "aaa";
}
catch (Exception ex)
{
MessageBox.Show(ex .Message);
}
}

会提示一个错误: 线程间操作无效:从不是创建控件"RichTextBox1"的线程访问控件
了解到添加SerialPort控件的时候,会自动创建一个线程,那么问题是如何在有信息传入的时候,控制窗体上的其他控件的显示?高手帮忙!
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
smaworm 2008-02-21
  • 打赏
  • 举报
回复
非常感谢各位!
lake_cx 的方法可行,原来帮助上是有的,呵呵没注意
jiatong1981 的方法直接可用,可以应急。
nealxhf 2008-02-21
  • 打赏
  • 举报
回复
同上,委托
jiatong1981 2008-02-21
  • 打赏
  • 举报
回复

private delegate void SetRichBoxCallBack();
private void addData()
{
if (this.richTextBox1.InvokeRequired)
{
SetRichBoxCallBack d = new SetRichBoxCallBack(addData);
this.Invoke(d);
}
else
{
this.richTextBox1.Text+= "aaa"; // 现假定为“aaa”

}

}


以上是委托 你在线程中调用adddata方法
jiatong1981 2008-02-21
  • 打赏
  • 举报
回复
使用委托
lake_cx 2008-02-21
  • 打赏
  • 举报
回复
在提示异常信息后点击查看帮助信息,如果你装了MSDN,恭喜你,可以搞定了。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧