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

前端之家收集整理的这篇文章主要介绍了如何检测系统时间是否已更改? (来自.net)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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情况下工作…确保你在花费更多时间而不是问题值之前,确定什么是“足够可靠”.

猜你在找的Windows相关文章