我正在使用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情况下工作…确保你在花费更多时间而不是问题值之前,确定什么是“足够可靠”.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。