NextValue()返回值0

Çöđ*_*xěŕ 0 c# performancecounter

我正在尝试使用NextValuePerformanceCounter课程PhysicalDisk。我似乎无法找出原因的某些原因,0每次都会返回。

  PerformanceCounter pcDiskTime = new PerformanceCounter("PhysicalDisk", "% Disk Time", "_Total");
  Single sinDisk = pcDiskTime.NextValue(); //returns 0.0
Run Code Online (Sandbox Code Playgroud)

使用上面的方法并调用pcDiskTime.NextValuereturn的0。我还有其他工作正常的柜台,可以退还我需要的东西。

.RawValue确实返回了一些东西,但不是我需要的值。是否有明显的我没有做的事情?

注意:我已经通过Performance Monitor这些验证了确实是正确的类别,计数器名称和实例名称。我还尝试过.NextValue()两次打电话,有时是第一次回电话0.0,但这无济于事。

Dam*_*ith 5

第一次它将返回零,因为没有先前的值要比较,请执行以下操作。

PerformanceCounter pcDiskTime = new PerformanceCounter("PhysicalDisk", "% Disk Time", "_Total");
//first time call 
float perfCounterValue = pcDiskTime.NextValue();
//wait some time
System.Threading.Thread.Sleep(1000);
//get the value again
perfCounterValue = pcDiskTime.NextValue();
Run Code Online (Sandbox Code Playgroud)

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