【发布时间】:2016-12-15 06:44:05
【问题描述】:
我有一个应用程序,它有多个设备以不同的通信协议连接,包括各种串口、USB、有线 TCP/IP,甚至无线(Zigbee、蓝牙、WIFI 等)。由于某些设备的硬件问题和有限的 API,并非所有设备都能够在物理断开连接或电池耗尽时向软件层报告或发出“断开连接”信号。
我的解决方法是在一个单独的线程上创建一个循环,该线程在应用程序启动时和整个应用程序运行时间长达 48 小时内运行,而无需重新启动应用程序。该线程不断检查是否所有设备都反馈了信号,如果没有,则认为它已断开连接并更新我的 GUI。
什么是健壮且占用最少资源(内存)的最佳方法
- 引发 Dispatch.Invoke,然后创建一个无限循环,不断检查反馈信号
- 使用 BackgroundWorker 线程。我只将它用于进度条,不确定它是否是为此目的而设计的。
- 或者有没有更好/标准的方法来完成这项工作?
【问题讨论】:
标签: c# wpf multithreading