在整个运行时间内连续监视物理设备断开连接

时间:2016-12-15 06:44:05

标签: c# wpf multithreading

我的应用程序有多个设备连接不同的通信协议,包括各种串口,USB,有线TCP / IP,甚至无线(Zigbee,蓝牙,WIFI等)。由于某些设备的硬件问题和有限的API,并非所有设备都能够报告或发出信号断开连接"物理断开连接或电池耗尽时到软件层。

我的工作是在一个单独的线程上创建一个循环,该循环在应用程序启动时运行,并在整个应用程序的运行时间内运行长达48小时,而无需重新启动应用程序。该线程持续检查所有设备是否反馈信号,如果没有,则认为它已断开连接并更新我的GUI。

最好的方法是什么是健壮的并且占用最少的资源(内存)

  1. 提出 Dispatch.Invoke 然后创建一个不断检查反馈信号的无限循环
  2. 使用 BackgroundWorker 主题。我只是将它用于进度条,并且不确定它是否是为延长时间运行而设计的。
  3. 或者有更好/标准的方式来做这样的工作吗?

1 个答案:

答案 0 :(得分:1)

使用Timer检查当前设备状态。并Dispatcher.Invoke更新用户界面