首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PerformanceCounter总是0

PerformanceCounter总是0
EN

Stack Overflow用户
提问于 2014-10-20 08:17:35
回答 1查看 795关注 0票数 0

我试着读取windows性能计数器"LogicalDisk / Disk /sec“和”集群Cluster/ IO读取/秒“。我是这样做的:

代码语言:javascript
复制
string category = "Cluster CSV File System";
string counter = "IO Reads/sec";
string instance = "Volume1";
for (int i = 0; i < 60; i++)
{
    using (PerformanceCounter perfCounter = new PerformanceCounter(category, counter, instance))
    {
        float value = perfCounter.NextValue();
        Console.WriteLine(i + " - {0}({1}): {2}", category, counter, value);
    }
    Thread.Sleep(1000);
}

但是NextValue()总是返回0。尽管性能监视器图中的值不是0。

如何获得此计数器的正确值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-20 08:23:31

你绝对应该读文档

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

因此:

代码语言:javascript
复制
using(...)
{
    perfCounter.NextValue(); // discard 0
    Thread.Sleep(1000);
    float value = perfCounter.NextValue();
    Console.WriteLine(i + " - {0}({1}): {2}", category, counter, value);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26461198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档