Torna al Thread
[DllImport("Kernel32.dll")]
public static extern void QueryPerformanceCounter(ref long ticks);
private PerformanceCounter _AverageDuration;
private PerformanceCounter _AverageDurationBase;
private long tmr;
private bool val = false;
private void Form1_Load(object sender, EventArgs e)
{
bool performaceCounterCategoryExists = PerformanceCounterCategory.Exists("MyTestCategory");
//if (performaceCounterCategoryExists)
//{
// PerformanceCounterCategory.Delete("MyTestCategory");
// this.Close();
//}
if (!performaceCounterCategoryExists)
{
CounterCreationDataCollection counters = new CounterCreationDataCollection();
CounterCreationData avgDuration = new CounterCreationData();
avgDuration.CounterName = "average time per operation";
avgDuration.CounterHelp = "Average duration per operation execution";
avgDuration.CounterType = PerformanceCounterType.AverageTimer32;
counters.Add(avgDuration);
CounterCreationData avgDurationBase = new CounterCreationData();
avgDurationBase.CounterName = "average time per operation base";
avgDurationBase.CounterHelp = "Average duration per operation execution base";
avgDurationBase.CounterType = PerformanceCounterType.AverageBase;
counters.Add(avgDurationBase);
// create new category with the counters above
PerformanceCounterCategory.Create("MyTestCategory",
"Sample category for Codeproject", counters);
}
_AverageDuration = new PerformanceCounter();
_AverageDuration.CategoryName = "MyTestCategory";
_AverageDuration.CounterName = "average time per operation";
_AverageDuration.MachineName = ".";
_AverageDuration.ReadOnly = false;
_AverageDuration.RawValue = 0;
_AverageDurationBase = new PerformanceCounter();
_AverageDurationBase.CategoryName = "MyTestCategory";
_AverageDurationBase.CounterName = "average time per operation base";
_AverageDurationBase.MachineName = ".";
_AverageDurationBase.ReadOnly = false;
_AverageDurationBase.RawValue = 0;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
long startTime = 0;
long endTime = 0;
QueryPerformanceCounter(ref startTime);
val = !val;
checkBox1.Checked = val;
checkBox2.Checked = val;
checkBox3.Checked = val;
checkBox4.Checked = val;
checkBox5.Checked = val;
//System.Threading.Thread.Sleep(500);
QueryPerformanceCounter(ref endTime);
tmr = endTime - startTime;
_AverageDuration.IncrementBy(tmr);
label1.Text = string.Format("{0:0.0000}", tmr);
}