我试着读取windows性能计数器"LogicalDisk / Disk /sec“和”集群Cluster/ IO读取/秒“。我是这样做的:
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。
如何获得此计数器的正确值?
发布于 2014-10-20 08:23:31
你绝对应该读文档
如果计数器的计算值依赖于两个计数器读取,则第一个读取操作返回0.0。重置性能计数器属性以指定不同的计数器等同于创建新的性能计数器,使用新属性进行的第一次读取操作返回0.0。对
NextValue方法的调用之间建议的延迟时间为1秒,以便计数器执行下一个增量读取。
因此:
using(...)
{
perfCounter.NextValue(); // discard 0
Thread.Sleep(1000);
float value = perfCounter.NextValue();
Console.WriteLine(i + " - {0}({1}): {2}", category, counter, value);
}https://stackoverflow.com/questions/26461198
复制相似问题