大家好,
我花了很长时间弄清楚在我当前的工作项目中使用哪种多线程方法。由于我一生中从未编写过多线程应用程序,因此这一切都令人困惑且非常压倒性。事不宜迟,这是我的背景故事:
我被指派在我公司的研发实验室中接管一个测试设备的控制应用程序的工作。该程序必须能够半并发地与三个不同的设备发送和接收串行通信。原始程序是用 VB 6(无多线程)编写的,我确实计划将其修改为与需要测试的较新产品一起使用,直到它在测试期间由于过多的串行通信而导致 UI 锁定时造成安全隐患. 这导致部分测试仪硬件崩溃,所以我决定尝试在 VB.Net 中重写应用程序,因为我一开始对它更满意,而且我认为多线程可能有助于解决这个问题。
我的计划是从主应用程序线程向其他设备发送命令,并将接收端旋转到它们自己的线程中,这样主线程就不会在时间紧迫时锁定。但是,我还没有接受我的选择。为了增加我的问题,我需要在接收到的单独富文本框中显示接收到的通信,而来自一个特定设备的数据需要由主程序解析,但只有来自最新测试的文本(我需要文本框来包含所有接收到的数据)。
到目前为止,我已经调查了委托,自己处理线程,并且刚刚开始研究 BackgroundWorkers。我今天早些时候尝试使用代表,但无法找到更新文本框的方法。我是否需要使用回调函数来执行此操作,因为我无法在委托函数本身的主体中执行此操作?我自己处理线程时看到的问题是弄清楚如何在线程和程序的其余部分之间来回传递数据。BackgroundWorkers,正如我所说,我刚刚开始调查,所以我还不确定如何看待它们。
我还应该注意,该计划是让生成的线程连续运行,直到以某种方式触发停止。上述任何选项都可以做到这一点吗?还有其他我还没有发现的选择吗?
对不起,我似乎在散布一些杂乱无章的信息,但我的期限很紧,压力大到我无法思考的地步!任何建议/信息/链接都非常感谢。我只需要帮助权衡选项,这样我就可以选择一个方向并继续前进。感谢所有花时间阅读这个烂摊子的人!