我正在使用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秒"你可能没问题.就虚拟机的限制而言,请注意当机器启动时间过长时,TickCount会翻转,因此您必须处理该问题,可能需要进行DateTime.UtcNow
健全性检查.
我会使用两者的组合 - 但请注意除了检查一些已知准确的外部时间服务器(这将会产生性能影响)之外没有绝对准确的方法,无论如何都会在VM情况下工作...确保你在花费更多时间而不是问题值之前,确定什么是"足够可靠".
归档时间: |
|
查看次数: |
7788 次 |
最近记录: |