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

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

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

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

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

3 回答

?
慕姐8265434

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

如果實(shí)際上(您的評論)真正關(guān)心的是一個唯一的時間戳,該時間戳以嚴(yán)格的升序分配,并且盡可能與系統(tǒng)時間相對應(yī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;

       }

   }

}


查看完整回答
反對 回復(fù) 2019-11-28
  • 3 回答
  • 0 關(guān)注
  • 796 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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