我需要計算在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