由于串口接收和多线程,C#form串口挂起需要解决方案

由于串口接收和多线程,C#form串口挂起需要解决方案,c#,multithreading,forms,serial-port,C#,Multithreading,Forms,Serial Port,我实际上被困在这个小应用程序中 它实际上意味着从硬件读取串行端口数据,以1Hz的速率,并在主窗体的两个图形和数据gridview上进行更新。第一个表单实际上自动检测串行端口,并等待您单击“下一步”并继续应用程序。如果它无法检测到您的串行端口,它将抛出一个错误 到达主窗体后,必须按下开始按钮才能开始串行端口接收。硬件实际上每隔一秒发送一个三位数的数字,格式为“100\n 200\n 300\n…”。每次输入新数据时,上面选项卡上的两个图形和Datagridview都会更新 由于1秒的时间间隔太短,

我实际上被困在这个小应用程序中

它实际上意味着从硬件读取串行端口数据,以1Hz的速率,并在主窗体的两个图形和数据gridview上进行更新。第一个表单实际上自动检测串行端口,并等待您单击“下一步”并继续应用程序。如果它无法检测到您的串行端口,它将抛出一个错误

到达主窗体后,必须按下开始按钮才能开始串行端口接收。硬件实际上每隔一秒发送一个三位数的数字,格式为“100\n 200\n 300\n…”。每次输入新数据时,上面选项卡上的两个图形和Datagridview都会更新

由于1秒的时间间隔太短,无法更新两个图、更新datagridview、将输入值与某些警报设置进行比较等,因此应用程序是多线程的。graph update方法被拆分为一个单独的线程,甚至串行端口数据接收也由data_received事件处理,默认情况下,data_received事件也是一个单独的线程

但是,问题是,应用程序在调试模式下运行良好。但是,当我在发布后运行它时,串行数据接收会在一段随机时间间隔后挂起。我认为这是由于一些数据误解或多线程时间限制问题或其他原因造成的。如果有人能找出问题所在,我将不胜感激

我已经附上了我的源代码。您也可以在应用程序中随意使用它。如果应用程序在visual studio上显示错误。请从“调试”或“发布”文件夹将Zedgraph.dll包含到表单控件中


提前谢谢

我们在这里不进行链接解压缩。“graph update方法被拆分为单独的线程”听起来不太可能:(请随意使用源代码,我们手头上唯一的一个事实是它没有完成它应该做的事情。呃…不。但是无论如何,感谢在graph update方法被拆分为单独的线程之前,UI的响应非常慢。只有当我拆分它时,它才正常工作。有一种方法可以解决这个简单的双线程应用程序。I just需要知道它在哪里出错,以及在部署/发布后运行一段时间后串行接收失败的原因。它在调试模式@daveL下正常工作。您至少可以运行它,然后评论它是否工作。