如何验证您的应用程序是否全天运行?

时间:2015-10-02 05:35:30

标签: c# windows

我编写了一个全天候运行的Windows C#应用程序并收集传感器数据,并将其存储在数据库中。

每晚一次,我对前一天的数据运行一些算法。结果仅在应用程序在前一天处于活动状态且没有重大中断时才有用(即,超过5分钟的中断将使得当天的结果无效)。

如何保证应用程序在没有重大突破的情况下一直在运行?

    即使应用程序/窗口崩溃并重新启动,
  • 解决方案仍应正常工作
  • 即使应用程序正在运行,也可能很长时间内没有传感器数据

第一个想法

  • 每分钟增加当天的数据库计数器。如果计数器达到最大值1440减去公差(60分钟x 24小时),则应用程序全天启动。看似复杂,每天都需要一个柜台。从夏天到冬天的时候会让人头疼......

2 个答案:

答案 0 :(得分:3)

这取决于你想要发生什么。我只想了几个简单的想法。

如果要重新启动应用程序 - 您可以创建旨在确保进程正在运行的Heartbeat Windows服务。如果它没有运行,你可以重新启动它。

如果您只是需要/想要验证数据。让应用程序向数据库报告运行状况检查,并将其用作"是否在此处"整个时间。

答案 1 :(得分:3)

保留以下两个变量(在数据库中,文件,您想要的任何地方):

  1. 整数。这将是您的离线最长秒数
  2. 时间戳。这将是您的最后一次心跳这需要是UTC,以使其能够防止DST。
  3. 让你的应用程序每隔几秒钟执行以下操作:

    1. 阅读最后时间戳
    2. 将其与当前(UTC)时间戳进行比较。
    3. 如果差异大于整数,请更新整数
    4. 使用当前的UTC时间戳更新时间戳
    5. 每天手动检查时间戳。这样做时将其重置为零。