加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何检测系统时间是否已更改? (来自.net)

发布时间:2020-12-14 04:18:52 所属栏目:Windows 来源:网络整理
导读:我正在使用DateTime.UtcNow来测量我的软件中的时间,并且需要能够判断“动作a”是否在“动作b”后不到10秒发生 但是,如果系统时间发生变化怎么办?那么我如何检测系统时间是否改变了? 我不想使用秒表,因为我们需要在具有多个CPU的服务器上运行,请参阅http://
我正在使用DateTime.UtcNow来测量我的软件中的时间,并且需要能够判断“动作a”是否在“动作b”后不到10秒发生

但是,如果系统时间发生变化怎么办?那么我如何检测系统时间是否改变了?

我不想使用秒表,因为我们需要在具有多个CPU的服务器上运行,请参阅http://kristofverbiest.blogspot.com/2008/10/beware-of-stopwatch.html

我还需要处理暂停和重新启动的虚拟机,因此“滴答计数”对我来说不太可能有用.

您可以使用 SystemEvents.TimeChanged事件来检测更改的时间.但是,只有在运行了一个messagepump时才会激活 – 这对于Windows客户端应用程序来说很好,但对于大多数服务器应用程序(如服务,Web应用程序等)来说并不是那么多.

否则你可以使用Environment.TickCount – 它没有很好的分辨率,但是如果你的“10”秒可以“接近10秒”你可能没问题.就VM限制而言,请注意当机器启动时间过长时TickCount会翻转,因此您必须处理该问题,可能需要使用DateTime.UtcNow健全性检查.

我会使用两者的组合 – 但请注意除了检查一些已知准确的外部时间服务器(这将会产生性能影响)之外没有绝对准确的方法,无论如何都会在VM情况下工作…确保你在花费更多时间而不是问题值之前,确定什么是“足够可靠”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读