using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace QueryPerfomanceDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            #if DEBUG
                MinimizeBox = false;
            #else       
                MinimizeBox = true;
            #endif
        }

        [DllImport("CoreDll.dll")]
        public static extern int QueryPerformanceFrequency(ref Int64 lpFrequency);

        [DllImport("CoreDll.dll")]
        public static extern int QueryPerformanceCounter(ref Int64 lpPerformanceCount);

        private void button1_Click(object sender, EventArgs e)
        {
            long ctr1 = 0, ctr2 = 0, freq = 0;
            int acc = 0, i = 0;
            if (QueryPerformanceCounter(ref ctr1) != 0)	// Начинаем отсчет
            {
                for (i = 0; i < 10000; i++) acc++;		// Выполняем длительные действия
                QueryPerformanceCounter(ref ctr2);	// Заканчиваем отсчет
 
                label1.Text = "Начальное значение: " + ctr1 + "\r\n";

                label1.Text += "Конечное значение: " + ctr2 + "\r\n";
                QueryPerformanceFrequency(ref freq);

                label1.Text += "Минимальное разрешение QueryPerformanceCounter: 1/" + 
                    freq + " сек." + "\r\n";
                label1.Text += "Время выполнения кода увеличения счетчика на 10000 единиц: " + 
                    (ctr2 - ctr1) * 1.0 / freq + " сек.";
            }
            else
                label1.Text = "Ваш компьютер не поддерживает высокоточный таймер.";
        }
    }
}