1

我们有 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 进程)来获取正确的实例名称?

4

0 回答 0