我在C#中使用PerformanceCounters。我已经收集了有关处理器和内存的信息,这很好。 现在,我想检查USB PerformanceCounterCategory。这就是我的所作所为:
System.Diagnostics.PerformanceCounterCategory Category = new System.Diagnostics.PerformanceCounterCategory("USB",".");
string[] instanceNames = Category.GetInstanceNames();
List<PerformanceCounter> countersList_temp = new List<PerformanceCounter>();
if (instanceNames.Length == 0)
{
countersList_temp.AddRange(Category.GetCounters());
}
else
{
for (int i = 0; i < instanceNames.Length; i++)
{
countersList_temp.AddRange(Category.GetCounters(instanceNames[i]));
}
}
foreach (performanceCounter counter in countersList_temp)
{
counter.NextValue();
}
对于上面的代码,我在调用InvalidOperationException
时收到异常counter.NextValue();
它的描述是:Counter is not single instance, an instance name needs to be specified.
我没有包含任何进一步显示所收集值的代码,因为它不是什么重要的。
在调试过程中,我看到,Category对象(属于USB类别)的CategoryType属性设置为MultiInstance
。但是instanceNames[]
数组是空的! Category.GetInstanceNames();
不会返回USB类别的任何实例。那么为什么房产会说MultiInstance
?我认为这是问题,我不知道如何处理。