首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-01-03 
关键词:线程,串口。知道的人帮我看下privatevoidserialPort1_DataReceived(objectsender,System.IO.Ports.S

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

}
)
);
}

热点排行