Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 性能计数器的值很奇怪_C#_.net - Fatal编程技术网

C# 性能计数器的值很奇怪

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

我使用以下代码来确定计算机的CPU总使用量

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秒,以允许计数器执行 下一次增量读取