为什么这个性能计数器总是返回零?

Rya*_*ies 2 c#

我有这个代码:

using (PerformanceCounter pfc = new PerformanceCounter("Processor", "% Processor Time", "_Total"))    
    return pfc.NextValue();
Run Code Online (Sandbox Code Playgroud)

总是返回0,即使总的CPU使用率不为零,而且在性能监视器观察时,对应的计数器也是不为0.

为什么?如何简单地返回总CPU使用率我需要做什么?

这是一个Windows 8.1虚拟机.

Gra*_*ICA 6

来自MSDN:

如果计数器的计算值取决于两个计数器读数,则第一个读取操作返回0.0.重置性能计数器属性以指定其他计数器等效于创建新的性能计数器,使用新属性的第一个读取操作返回0.0.调用NextValue方法之间建议的延迟时间是一秒,以允许计数器执行下一次增量读取.

因此,我会说"%Processor Time"计数器的计算值取决于两个计数器读数,因此根据文档,您看到的第一个是0.0.

我使用他们在读取之间等待一秒的建议来测试它.我0.0每次都读到第一次,但后来又出现了正值.

using (PerformanceCounter pfc = new PerformanceCounter("Processor", "% Processor Time", "_Total"))
{
    MessageBox.Show(pfc.NextValue().ToString());
    Thread.Sleep(1000);
    MessageBox.Show(pfc.NextValue().ToString());
    Thread.Sleep(1000);
    MessageBox.Show(pfc.NextValue().ToString());
}
Run Code Online (Sandbox Code Playgroud)