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 カテゴリの 2 つのカウンターのサポートを追加しました。そして、プロセス ID とインスタンス名の一致が異なることを発見しました: alt テキスト http://img26.imageshack.us/img26/9876/perfmon.png

したがって、プロセス ID は、.Net Clr メモリとプロセス カテゴリの 1 つのインスタンス名に対して異なります。

  1. .Netのバグですか?

  2. 正しいインスタンス名を取得するには、どのカウンター (.Net Clr メモリからのプロセス ID またはプロセス カテゴリからの ID プロセス) を使用する必要がありますか?

4

0 に答える 0