0

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

comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);

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

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

现在,我想在从设备接收到一些数据时自动写入数据,而不是在收到数据时按下按钮。所以我的 q 是我可以 comPort.WriteLine(textBox1.Text + "\r\n");

private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)

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

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

谢谢 !

4

1 回答 1

0

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

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

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

于 2013-02-11T09:14:55.407 回答