我需要计算在Silverlight 3.0中从一个状态到另一个状态所经过的时间。计算持续时间无DateTime.UtcNow
这是最常见的事:
DateTime Start = DateTime.UtcNow;
.
.
.
DateTime End = DateTime.UtcNow;
TimeSpan Duration = End - Start;
,但是这并不能掩盖的情况是:用户更改计算机的时间。 有没有办法使用其他计时器获得相同的效果?例如,一个计时器,用于计算从打开计算机(C#中的Easy,但在SL中被阻止)或其他任何不基于DateTime.Now或DateTime.UtcNow的计时器以来的时间。
吉拉德。
这是可能的,但由于分派器使用优先级队列,因此不能保证所计算的持续时间将是准确的,并且随着时间的推移会出现越来越大的滞后 – Gilad 2010-01-21 17:01:53
@Gilad:我想这取决于您的解决方案是什么?分钟?秒?毫秒?也取决于是否可以跳过某个事件或者是否所有事件都排队。你希望使间隔明显小于你想要的分辨率。您也可以将此方法与比较日期结合起来,这种方法允许您检测间隔和DateTime差异之间的显着不匹配,从而表明系统时间已被修改。 – AnthonyWJones 2010-01-21 17:14:01