PerformanceCounterCategory USB是MultiInstance,但没有找到实例

时间:2016-09-14 10:11:48

标签: c# exception instance performancecounter

我在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?我认为这是问题,我不知道如何处理。

0 个答案:

没有答案