对于低于性能的计数器,我总是得到%Processor Time为0,即使我的CPU显示100%使用率,这可能是什么原因?

PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
Console.WriteLine(pc.NextValue());

最佳答案

通过NextValue() documentation中的注释进行解释:


  如果计数器的计算值取决于两次计数器读取,则第一次读取操作将返回0.0。重置性能计数器属性以指定其他计数器等效于创建新的性能计数器,并且使用新属性进行的第一次读取操作将返回0.0。建议两次调用NextValue方法之间的延迟时间为一秒,以允许计数器执行下一个增量读取。


因此,如果您将代码更改为:

while (true)
{
    Console.WriteLine(pc.NextValue());
    Thread.Sleep(1000);
}


...然后您将看到适当的值。

关于c# - PerformanceCounter CPU使用率值始终为0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44280749/

10-10 09:05