我目前正在这样做:
PerformanceCounter cpuUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total");
cpuUsage.NextValue();
System.Threading.Thread.Sleep(1000);
RV = cpuUsage.NextValue();
我定期调用该函数以获得CPU使用率。当我在TaskManager中监视系统时,PerformanceCounter报告的CPU使用率始终比TaskManager报告的高出15-20%(TaskManager中的30%=来自PerformanceCounter的50%)。
也许我忽略了那些文档,但是有人有解释吗?也许它检查的瞬间CPU使用率更高,任务管理器报告平均值?
答案 0 :(得分:5)
new PerformanceCounter("Processor", ...);
如果您坚持与任务管理器或Perfmon完全匹配,则使用错误的计数器。使用“处理器信息”而不是“处理器”。这些计数器显示不同值的原因在this blog post中得到了很好的解决。哪个计数器“正确”是一个我不想用十英尺杆接触的问题:)