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 //结果根据个人电脑的性能而有所差别