我正在写一个C#应用程序,通过串行通信到微控制器。关于如何处理收到的消息,我有几个问题。下面是我目前使用的代码,它收到的消息非常好,但我无法更新表单,或将数据存储在此方法以外的任何位置(因为它位于另一个线程中)。串行通信C#
com.DataReceived += new SerialDataReceivedEventHandler(OnReceived);
public void OnReceived(object sender, SerialDataReceivedEventArgs c) // This is started in another thread...
{
com.DiscardOutBuffer();
try
{
test = com.ReadExisting();
MessageBox.Show(test);
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}
当我试图改变形式,或者从这里这个调用另一个方法是我收到错误消息:“跨THEAD操作无效”。
我希望能够在其他地方显示信息,甚至更好地将其放入数组中,以便稍后将其存储为文件。有什么办法可以做到这一点?再次
谢谢!
这完美地工作,谢谢!调用完成的是什么? – Bubo
@VRKnight它告诉主(GUI)线程执行你的代码,而不是后台线程。只有GUI线程才允许修改GUI(例如通过显示消息框),所以这是必要的。 –