c#:从读取线程写入串行数据

时间:2013-02-01 16:08:41

标签: c# serial-port

我正在使用设备发送和接收数据 c#(串行通信)。 接收我的设置是这样的。 我收到一个单独的帖子,即我有类似的东西

comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);

private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    .....
}

要编写我按下一个按钮,将数据写入设备。

现在,当我从设备接收一些数据而不是我推送时,我正在考虑自动写入数据 我收到数据时的按钮。所以我的问题是我可以放

正文中的comPort.WriteLine(textBox1.Text + "\r\n");
private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)

功能。因为我把它写在这里它停止工作。否则,如上所述,写入使用单独的按钮按下。

有人可以告诉我什么是正确的方法。是否存在线程问题或某些问题

谢谢!

1 个答案:

答案 0 :(得分:0)

任何带有UI控件的操作(包括读写属性,如Text)都应该在应用程序的主线程中完成。如果您在另一个线程中,则应使用Invoke方法执行操作:

var text = (string)textBox1.Invoke(new Func<string>(() =>
    {
        return textBox1.Text;
    }));
comPort.WriteLine(text + "\r\n");

阅读this答案以获取更多信息。