gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:03:41 29 4
gpt4 key购买 nike

我在我的软件中使用 DateTime.UtcNow 来测量时间,并且需要能够判断“ Action a”是否在“ Action b”之后发生的时间少于 10 秒

但是如果系统时间改变了怎么办?那么如何检测系统时间是否更改?

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

我还需要应对虚拟机的暂停和重启,因此“滴答计数”不太可能对我有用。

最佳答案

您可以使用 SystemEvents.TimeChanged 检测时间改变的事件。但是,只有在运行消息泵时才会触发 - 这对于 Windows 客户端应用程序来说很好,但对于大多数服务器应用程序(如服务、Web 应用程序等)来说就不是那么多了。

否则你可以使用 Environment.TickCount - 它没有很好的分辨率,但如果你的“10”秒可以是“将近 10 秒”,你可能没问题。就 VM 限制而言,请注意当机器启动时间足够长时 TickCount 会翻转,因此您必须处理它,可能使用 DateTime.UtcNow。以任何一种方式进行健全性检查。

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

关于.net - 如何检测系统时间是否更改? (来自.net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4246882/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com