高精度计时器

 internal class HiPerfTimer

    {

        [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 HiPerfTimer()

{

            startTime = 0;

            stopTime  = 0;

 

            if (QueryPerformanceFrequency(out freq) == false)

            {

                // high-performance counter not supported 

                throw new Win32Exception(); 

            }

}

// Start the timer

public void Start()

{

            // lets do the waiting threads there work

            Thread.Sleep(0);  

 

QueryPerformanceCounter(out startTime);

}

// Stop the timer

public void Stop()

{

   QueryPerformanceCounter(out stopTime);

}

// Returns the duration of the timer (in seconds)

        public double Duration

        {

        get

        {

            return (double)(stopTime - startTime) / (double) freq;

             }

        }

}

posted @ 2012-10-08 16:43  冰呆瓜  阅读(229)  评论(0编辑  收藏  举报