【问题标题】:Why does this performance counter always return zero? [duplicate]为什么这个性能计数器总是返回零? [复制]
【发布时间】:2014-01-29 09:23:46
【问题描述】:

我有这个代码:

using (PerformanceCounter pfc = new PerformanceCounter("Processor", "% Processor Time", "_Total"))    
    return pfc.NextValue();

这个总是返回 0,即使总 CPU 使用率不为零,并且在性能监视器中查看时,这个对应的计数器也不为 0。

为什么?我需要做什么才能简单地返回总 CPU 使用率?

这是一个 Windows 8.1 虚拟机。

【问题讨论】:

    标签: c#


    【解决方案1】:

    来自MSDN

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

    因此,我会说“% Processor Time”计数器的计算值取决于两次计数器读取,因此根据文档,您看到的第一个是 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());
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 2017-03-28
      相关资源
      最近更新 更多