我有这个代码:
using (PerformanceCounter pfc = new PerformanceCounter("Processor", "% Processor Time", "_Total"))
return pfc.NextValue();
This always返回 0,即使总 CPU 使用率不为零,并且在性能监视器中查看时相应的计数器也不为 0。
为什么?我需要做什么才能简单地返回总 CPU 使用率?
这是一个 Windows 8.1 虚拟机。
From MSDN http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.nextvalue%28v=vs.110%29.aspx:
如果计数器的计算值取决于两次计数器读取,则第一次读取操作将返回 0.0。重置性能计数器属性以指定不同的计数器相当于创建一个新的性能计数器,并且使用新属性的第一次读取操作将返回 0.0。建议调用 NextValue 方法之间的延迟时间为一秒,以允许计数器执行下一次增量读取。
因此,我想说“%处理器时间”计数器的计算值取决于两个计数器读数,因此根据文档,您看到的第一个是 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());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)