程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 計時器,

C# 計時器,

編輯:C#入門知識

C# 計時器,


C# 計時器

C#中一共有4中常用的計時器:

  • System.Timers.Timer 和 System.Windows.Forms.Timer ,它的最低識為 1/18s。
  • timeGetTime ,它的最低識別能達到 5ms 。
  • System.Environment.TickCount ,它的最低識別為毫米級。
  • QueryPerformanceCounter,它的最低識別為 1ms。
//以QueryPerformanceCounter為例:
    public class Program
    {
        //引用Win32 API 中的 QueryPerformanceCounter() 方法
        //該方法引來查詢任意時刻高精度計數器的實際值
        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);

        //引用Win32 API 中的 QueryPerformanceFrequency() 方法
        //該方法返回高精度計數器每秒的計數值
        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceFrequency(out long lpFrequency);

        public static void Main(string[] args)
        {
            long startTime, endTime;
            long freq;
            if (QueryPerformanceFrequency(out freq) == false)
            {
                //不支持高性能計時器
                throw new Win32Exception();
            }
            Thread.Sleep(0);    //讓等待線程工作,此例為單線程,可省略
            QueryPerformanceCounter(out startTime); //記錄開始時間,精度為1ms
            for (int i=0;i<10000;i++)
            {
                for (int j = 0; j < 10000; j++)
                {
                    int temp = 0;
                }
            }
            QueryPerformanceCounter(out endTime);   //記錄結束時間,精度為1ms
            Console.WriteLine((double) (endTime - startTime)*1000/freq+"ms");
            Console.ReadKey();
        }
    }

//Result:
//412.58911914026ms
//結果根據個人電腦的性能而有所差別

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved