我有这个代码:
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虚拟机.
来自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)
| 归档时间: |
|
| 查看次数: |
2179 次 |
| 最近记录: |