【问题标题】:Continuously monitor physical device disconnection throughout runtime在整个运行时持续监控物理设备断开连接
【发布时间】:2016-12-15 06:44:05
【问题描述】:

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

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

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

  1. 引发 Dispatch.Invoke,然后创建一个无限循环,不断检查反馈信号
  2. 使用 BackgroundWorker 线程。我只将它用于进度条,不确定它是否是为此目的而设计的。
  3. 或者有没有更好/标准的方法来完成这项工作?

【问题讨论】:

    标签: c# wpf multithreading


    【解决方案1】:

    使用Timer 检查当前设备状态。和Dispatcher.Invoke更新UI

    【讨论】:

    • 我已经尝试过了,每 2 小时我在任务管理器中检查,内存使用量就会增加 10MB。所以我预计运行 48 小时会导致内存使用量增加 240MB。
    • @KMC 您的实施可能存在问题。您可以使用任何首选的内存分析器或使用代码和您的观察创建新问题
    猜你喜欢
    • 2022-06-15
    • 2012-12-12
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多