进程计数器的奇怪行为

时间:2009-10-23 15:49:02

标签: .net iis performancecounter

我们有Web应用程序,我们正在使用一些性能计数器。对于同时运行多个应用程序的情况,我们有用于确定当前实例名称的代码:

  int processId = GetProcessID();

  PerformanceCounterCategory processCategory = new PerformanceCounterCategory("Process");
  string[] runnedInstances = processCategory.GetInstanceNames();

  foreach (string runnedInstance in runnedInstances){
    using (System.Diagnostics.PerformanceCounter performanceCounter = 
      new System.Diagnostics.PerformanceCounter("Process", "ID Process", runnedInstance, true)){
      if ((int)performanceCounter.RawValue == processId){
        return runnedInstance;
      }
    }
  }

此代码工作正常,但前段时间我们在.Net CLR类别中添加了两个计数器。正如我们发现他们在进程ID和实例名称之间有不同的匹配:alt text http://img26.imageshack.us/img26/9876/perfmon.png

因此.Net Clr内存和进程类别的一个实例名称的进程ID不同。

  1. 是.Net的错误吗?

  2. 我应该使用什么计数器(来自.Net Clr内存的进程ID或来自进程类别的ID进程)来获取正确的实例名称?

0 个答案:

没有答案