第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取.NET / C#中的滴答精度時間戳?

如何獲取.NET / C#中的滴答精度時間戳?

慕神8447489 2019-11-28 14:04:31
到目前為止,我一直使用DateTime.Now時間戳記,但是我注意到,如果您DateTime.Now循環(huán)打印,您會發(fā)現(xiàn)它以大約5%的離散跳躍遞增。15毫秒 但是對于我的應用程序中的某些情況,我需要獲得最準確的時間戳,最好是滴答(= 100 ns)精度。有任何想法嗎?更新:顯然,StopWatch/ QueryPerformanceCounter是要走的路,但是它只能用于測量時間,因此我在考慮DateTime.Now在應用程序啟動時調用,然后才StopWatch運行,然后將經(jīng)過的時間從添加到從StopWatch返回的初始值中DateTime.Now。至少那應該給我準確的相對時間戳,對嗎?您如何看待(黑客)?注意:StopWatch.ElapsedTicks不同于StopWatch.Elapsed.Ticks!我使用前者假設1 tick = 100 ns,但在這種情況下1 tick = 1 / StopWatch.Frequency。因此,要獲取等于DateTime的報價,請使用StopWatch.Elapsed.Ticks。我只是很難學到的。筆記2:使用StopWatch方法,我注意到它與實時不同步。大約10個小時后,它領先了5秒鐘。因此,我想每個X都必須重新同步一次,其中X可能是1小時,30分鐘,15分鐘等。我不確定重新同步的最佳時間間隔是多少,因為每次重新同步都會改變偏移量,長達20毫秒。
查看完整描述

3 回答

?
慕姐8265434

TA貢獻1813條經(jīng)驗 獲得超2個贊

如果實際上(您的評論)真正關心的是一個唯一的時間戳,該時間戳以嚴格的升序分配,并且盡可能與系統(tǒng)時間相對應,則可以嘗試以下替代方法:


public class HiResDateTime

{

   private static long lastTimeStamp = DateTime.UtcNow.Ticks;

   public static long UtcNowTicks

   {

       get

       {

           long orig, newval;

           do

           {

               orig = lastTimeStamp;

               long now = DateTime.UtcNow.Ticks;

               newval = Math.Max(now, orig + 1);

           } while (Interlocked.CompareExchange

                        (ref lastTimeStamp, newval, orig) != orig);


           return newval;

       }

   }

}


查看完整回答
反對 回復 2019-11-28
  • 3 回答
  • 0 關注
  • 785 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號