关键词:线程,串口。知道的人帮我看下
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;
}
)
);
}