<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>The following class implements the functionality of the QueryPerformanceCounter() and QueryPerformanceFrequency() API methods. </Title>
      <Shortcut>ThefollowingclassimplementsthefunctionalityoftheQueryPerformanceCounter()andQueryPerformanceFrequency()APImethods.</Shortcut>
      <Description>The following class implements the functionality of the QueryPerformanceCounter() and QueryPerformanceFrequency() API methods.  [C#]</Description>
      <Author>Zepho Zep</Author>
      <HelpUrl>/PreviewSnippet.aspx?SnippetID=107d2815-404d-4e5c-adc6-dbfb1c867cbf</HelpUrl>
      <SnippetTypes>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Code Language="csharp"><![CDATA[using System;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Threading;
namespace Win32
{
	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;
		// Constructor
		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;
			}
		}
	}
}
]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>