我的部分程序使用事件处理程序来接收串行端口的数据。这个想法是在接收到数据时将接收到的文本添加到文本框(rx)中。我以前没有这个问题,但有些东西已经改变了,我不知道是什么。所以现在我正在重新审视这个处理方式。
在我的 winform 表单加载期间,我做的最后一件事是
if (!serialPort1.IsOpen)
{
serialPort1.Open();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}
然后我有事件处理程序
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
string indata1 = serialPort1.ReadExisting();
// rx.Text = " "; accidentally posted this. it was from trial and error.
rx.AppendText(Environment.NewLine + indata1);
}
当我运行程序时,它停在rx.AppendText(Environment.NewLine + indata1);
并给出错误
invalidoperationexception 未处理:控制“从创建它的线程以外的线程访问。
从我能够阅读的内容来看,我需要使用invoke
or BeginInvoke
。
我以前从未遇到过附加文本的问题,所以现在我不明白为什么会出现问题。另外,从我一直在阅读的关于调用的内容来看,我只是不明白。
有人可以帮助我了解如何针对我的情况使用调用实例吗?或者也许向我展示另一种附加文本框的方式?