PerformanceCounter报告的CPU使用率高于观察到的CPU使用率

我目前正在这样做:

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使用率更高,任务管理器报告平均值?

  new PerformanceCounter("Processor", ...); 

如果您坚持与任务管理器或Perfmon完全匹配,则使用错误的计数器。 使用“处理器信息”而不是“处理器”。 在这篇博文中,这些计数器显示不同值的原因很好。 哪个计数器“正确”是一个我不想用10英尺杆接触的问题:)