あなたの説明によると、私はあなたがカスタムカウンターを作成したいと思っていると思います。カウンターは一度に作成できますが、インスタンスを1つずつ作成する必要があります。
CounterCreationDataCollectionクラスとCounterCreationDataクラスを使用します。まず、カウンターデータを作成し、それらを新しいカウンターカテゴリに追加してから、インスタンスを作成します。
//Create the counters data. You could also use a loop here if your counters will have exactly these names.
CounterCreationDataCollection counters = new CounterCreationDataCollection();
counters.Add(new CounterCreationData("CounterName1", "Description of Counter1", PerformanceCounterType.AverageCount64));
counters.Add(new CounterCreationData("CounterName2", "Description of Counter2", PerformanceCounterType.AverageCount64));
//Create the category with the prwviously defined counters.
PerformanceCounterCategory.Create("CategoryName", "CategoryDescription", PerformanceCounterCategoryType.MultiInstance, counters);
//Create the Instances
CategoryName actions = new PerformanceCounter("CategoryName", "CounterName1", "Instance1", false));
CategoryName tests = new PerformanceCounter("CategoryName", "CounterName2", "Instance1", false));
私の提案は、カウンター名として一般名を使用しないことです。カウンターを作成した後、(おそらくパフォーマンスモニターを介して)データを収集する可能性があるためCounteName1
、名前として使用する代わりに、カウンターが表すもの(アクション、テストなど)を使用します。
編集
特定のカテゴリのすべてのカウンタを一度に取得するには、カウンタカテゴリのインスタンスを作成し、GetCountersメソッドを使用します。
PerformanceCounterCategory category = new PerformanceCounterCategory("CategoryName");
PerformanceCounter[] counters = category.GetCounters("instance");
foreach (PerformanceCounter counter in counters)
{
//do something with the counter
}