C# 性能计数器的值很奇怪
我使用以下代码来确定计算机的CPU总使用量C# 性能计数器的值很奇怪,c#,.net,C#,.net,我使用以下代码来确定计算机的CPU总使用量 private int getCPUUsage() { PerformanceCounter cnt = new PerformanceCounter("Processor", "% Processor Time", "_Total"); return (int)cnt.NextValue(); } 但是,任务管理器的CPU使用率约为20%,但函数的输出值大多为0,有时为100。 奇怪的是,当我把一个消息框放在函数中间时,MexEdb
private int getCPUUsage()
{
PerformanceCounter cnt = new PerformanceCounter("Processor", "% Processor Time", "_Total");
return (int)cnt.NextValue();
}
但是,任务管理器的CPU使用率约为20%,但函数的输出值大多为0,有时为100。
奇怪的是,当我把一个消息框放在函数中间时,MexEdbox的值是错误的,但是返回值是正确的。
private int getCPUUsage()
{
PerformanceCounter cnt = new PerformanceCounter("Processor", "% Processor Time", "_Total");
MessageBox.Show(cnt.NextValue().ToString()); //Just 0
return (int)cnt.NextValue(); //Right Value
}
因此,我运行了两次cnt.NextValue()
,而不是MessageBox
,但结果与原始代码相同。如何正常获取
性能计数器的CPU使用率?第一个值始终为0,因为没有可比较的值
您必须运行更多次才能获得比较结果。发件人:
如果计数器的计算值取决于两个计数器读数,则
第一次读取操作返回0.0。重置性能计数器
指定不同计数器的属性等同于创建
新的性能计数器,以及使用新的
属性返回0.0。到的两次呼叫之间的建议延迟时间
NextValue方法为1秒,以允许计数器执行
下一次增量读取