好日子所有,需要咨询关于VB.Net多线程选项
我有一个时间地狱搞清楚其多线程的方式在我目前的工作项目,以利用。由于我从未在我的生活中编写过多线程应用程序,这一切都令人困惑,并且非常令人难以置信。简而言之,这里是我的背景故事:
我已被分配接管在我公司的一台测试设备的控制应用程序的工作R & D实验室。该程序必须能够半并发地发送和接收与三个不同设备的串行通信。原来的程序是用VB 6编写的(没有多线程),我的计划只是修改它,以便与需要测试的新产品一起工作,直到由于测试过程中过多的串行通信导致用户界面锁定而导致安全隐患时。这导致测试器硬件的一部分被炸毁,所以我决定尝试在VB.Net中重写应用程序,因为我更喜欢它,因为我认为多线程可能有助于解决这个问题。
我的计划是从主应用程序线程向其他设备发送命令,并将接收端关闭到自己的线程中,以便在计时非常关键时主线程不会锁定。不过,我还没有接受我的选择。为了补充我的问题,我需要在接收到的通信信息时使用单独的富文本框来显示接收到的通信信息,而来自某个特定设备的数据需要由主程序进行分析,但仅限于最新测试的结果(我需要文本框来包含所有收到的数据)。
到目前为止,我已经调查过代表,自己处理线程,并开始研究BackgroundWorkers。我今天早些时候尝试使用代表,但无法找出更新文本框的方法。我是否需要使用回调函数来执行此操作,因为我无法在委托函数本身中执行此操作?我自己处理线程看到的问题是弄清楚如何在线程和程序的其余部分之间来回传递数据。背景工作者,正如我所说的,我刚开始调查,所以我不知道该怎么考虑他们。
我还应该注意,该计划是为了产生的线程连续运行,直到以某种方式触发停止。这可能与以上任何选项?我还没有发现其他选项吗?
对不起,我似乎在漫无边际的信息,但我在一个紧迫的最后期限,并强调到我不能认为直的点!任何建议/信息/链接超过赞赏。我只需要帮助权衡选项,以便我可以选择一个方向并继续前进。感谢大家花时间阅读这个烂摊子!
你用串口应用程序炸毁硬件?真棒! +1只是为了防火! – 2012-04-25 21:24:57
是的,测试仪接收到串行命令,告诉它打开和关闭特定的继电器。那么,一个继电器通过一个负载库产生一个热短路,并且只能在一秒之内间隔启动。当UI锁定时,BOOM! ;-) – Jacob 2012-04-25 21:28:16
Windows不是[实时系统](http://stackoverflow.com/tags/real-time/info),因此您可以编写一个多线程程序,它能够成功通过您可以实现的每个测试,但仍然能够以随机的速度炸毁东西;) – GSerg 2012-04-25 21:48:55