我目前正在这样做:

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 的完全匹配,则您使用了错误的计数器。使用“处理器信息”而不是“处理器”。这些计数器显示不同值的原因在 this blog post 中得到了很好的解决。哪个计数器是“正确的”是一个我不想用十英尺长的杆子接触的问题:)

关于c# - PerformanceCounter 报告的 CPU 使用率高于观察到的情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23391455/

10-10 18:18