读书人

关键词:线程串口。知道的人帮小弟我

发布时间: 2012-01-03 22:16:06 作者: rapoo

关键词:线程,串口。知道的人帮我看下
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
textBox1.text=textBox1.text + serialPort1.ReadExisting ();


}

出错信息是 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。

我应该怎么办呢

[解决办法]
如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。通常,无效的线程活动是对访问控件的 Handle 属性的错误线程的调用。

在线程的函数或者过程中 加上 CheckForIllegalCrossThreadCalls = False 就可以了!
[解决办法]
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{

string s = sp.ReadExisting(); // sp是串口控件名
ShowText(s);

}


private void ShowText(string msg)
{
this.Invoke(new EventHandler(delegate
{

txtShow.Text = msg;

}
)
);
}

读书人网 >C#

热点推荐