91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現精確到納秒級別的計時器類

發布時間:2021-08-21 13:52:43 來源:億速云 閱讀:167 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關C#如何實現精確到納秒級別的計時器類的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

主要用到了win32里面的QueryPerformanceCounter和QueryPerformanceFrequency兩個函數

文檔鏈接:https://docs.microsoft.com/zh-cn/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter

class NanoSecondTimer
    {

        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);

        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceFrequency(out long lpFrequency);

        private long startTime, stopTime;
        private long freq;
        public NanoSecondTimer()
        {
            startTime = 0;
            stopTime = 0;
            if (QueryPerformanceFrequency(out freq) == false)
            {
                throw new Win32Exception();
            }
        }

        /// <summary>
        /// 開始計時
        /// </summary>
        public void Start()
        {
            Thread.Sleep(0);
            QueryPerformanceCounter(out startTime);
        }

        /// <summary>
        /// 停止計時
        /// </summary>
        public void Stop()
        {
            QueryPerformanceCounter(out stopTime);
        }

        /// <summary>
        ///  返回計時器經過時間(單位:秒)
        /// </summary>
        public double Duration
        {
            get
            {
                return (double)(stopTime - startTime) / (double)freq;
            }
        }
    }

QueryPerformanceFrequency這個函數會檢索性能計數器的頻率。性能計數器的頻率在系統啟動時是固定的,并且在所有處理器上都是一致的。因此,只需在應用初始化時查詢頻率,即可緩存結果。在運行 Windows XP 或更高版本的系統上,該函數將始終成功,因此永遠不會返回零。

下面是測試代碼:

NanoSecondTimer nanoSecondTimer = new NanoSecondTimer();
            nanoSecondTimer.Start();
            for (int i = 0; i < 100000; i++)
            {
                i++;
            }
            nanoSecondTimer.Stop();
            double time = nanoSecondTimer.Duration;

感謝各位的閱讀!關于“C#如何實現精確到納秒級別的計時器類”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐平市| 乳山市| 宁阳县| 东山县| 榆社县| 酉阳| 巧家县| 攀枝花市| 双辽市| 托里县| 平昌县| 萍乡市| 迁西县| 从江县| 伊金霍洛旗| 高安市| 比如县| 贺兰县| 徐州市| 东方市| 深泽县| 原阳县| 永德县| 仁怀市| 巴中市| 随州市| 泌阳县| 东辽县| 巍山| 西宁市| 通渭县| 沙坪坝区| 博爱县| 怀安县| 澄城县| 偃师市| 高平市| 绵阳市| 三河市| 九龙坡区| 黔南|