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

标签 c# windows

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

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

有什么想法可以确保该应用在一天中一直运行而不会出现重大中断吗?

  • 即使应用程序/Windows 崩溃并重新启动,解决方案也应该有效
  • 有可能长时间没有感知数据,即使app正在运行也是如此

最初的想法

  • 每分钟增加当天的数据库计数器。如果计数器达到最大值 1440 减去公差(60 分钟 x 24 小时),则该应用程序整天都在运行。看起来很复杂,每天都需要一个计数器。从夏令时到冬令时会让人头疼...

最佳答案

持久化以下两个变量(在数据库、文件中,任何你想要的地方):

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

让您的应用每隔几秒执行一次以下操作:

  1. 读取最后一个时间戳
  2. 将其与当前 (UTC) 时间戳进行比较。
  3. 如果差异大于整数,则更新整数
  4. 使用当前 UTC 时间戳更新时间戳

每天,手动检查时间戳。这样做时将其重置为零。

关于c# - 如何验证您的应用程序是否全天运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32901111/

相关文章:

c# - Windows编程: setting different icons for the different file types handled by your application

windows - 删除在 PostgreSQL 安装期间创建的 3 个默认数据库是否安全?

java - 无法验证从属性文件加载的目录

c++ - Boost asio async_accept 在 Windows 下工作,但在 FreeBSD 下失败。怎么了?

c# - 单行多属性代码最小起订量

c# - Windows Mobile : using phone's camera with C#

windows - ActiveState Perl CPAN dmake 不工作

c# - 授权属性中的角色在 MVC 4 中无法按预期工作

c# - WebSockets SendAsync 异常

c# - 如何使用 C# 返回标有自定义属性的枚举值