【发布时间】:2013-07-10 20:42:20
【问题描述】:
我定义了一个串行端口 (C# / .Net),然后为每当接收到数据时分配一个 SerialDataReceivedEventHandler。
myPort.DataReceived += new SerialDataReceivedEventHandler (myEventHandler);
但是,每当收到数据时,我都需要做很多事情,包括:
- 将数据保存到我的 SQL 数据库中。
- 在 UI 上更新 RichTextBox
- 发回响应串行消息
我应该从 myEventHandler 中运行所有这些函数吗?这是正确的做法吗?问题是,例如,当我尝试从 myEventHandler 中更改 RichTextBox 时,我收到一条错误消息,指出我正在执行跨线程操作。
更新:
private void myEventHandler (object sender, SerialDataReceivedEventArgs e)
{
Action myAction = () => rtbMyRichTextBox.Text = InputMessageString;
if (rtbMyRichTextBox.InvokeRequired)
rtbMyRichTextBox.Invoke(myAction);
else
myAction();
StoreToSqlDatabase ();
SerialWriteResponseMessage ();
}
【问题讨论】:
标签: c# .net serial-port