如何validation你的应用程序整天运行?

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

每天晚上一次,我对前一天的数据运行一些algorithm。 如果应用程序在整个前一天没有重大的中断(即,中断超过5分钟将导致当天的结果无用),结果才有用。

任何想法如何保证应用程序运行在一天中的所有时间没有重大的rest?

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

第一个想法

  • 每分钟增加当前一天的数据库计数器。 如果计数器达到最大1440减去公差(60分钟×24小时),该应用程序是整天。 看起来很复杂,每天都需要一个柜台。 从夏天到冬天的时间会改变头痛

坚持以下两个变量(在数据库,文件,无论你想要的地方):

  1. 一个整数 。 这将是您离线的最大秒数
  2. 时间戳 。 这将是你最后的心跳这需要是UTC,使其防DST。

使您的应用程序每隔几秒钟执行以下操作:

  1. 阅读上次的时间戳
  2. 将其与当前(UTC)时间戳进行比较。
  3. 如果差值大于整数 ,则更新整数
  4. 使用当前UTC时间戳更新时间戳。

每天都要手动检查时间戳 。 当你这样做的时候把它重置为零。

这取决于你想要发生什么。 只是我的头顶几个快速的想法。

如果您想重新启动应用程序 – 您可以创建一个Heartbeat Windows服务,该服务旨在确保进程正在运行。 如果没有运行,可以重新启动进程。

如果你只需要/想验证数据。 让应用程序向数据库报告一个健康状况检查,并将其作为“一直在这里”使用。