2010-03-10 13 views
18

Ich füge meinem C# -Projekt einige Leistungsindikatoren hinzu und erstelle eine neue PerformanceCounterCategory. In dieser Kategorie hätte ich gerne mehrere Zähler/Timer, die verschiedene Dinge verfolgen. Ich muss mehrere durchschnittliche Timer verwenden und versuche zu verstehen, wie der AverageBase-Zähler mit dem richtigen AverageTimer32-Zähler verknüpft wird, wenn mehr als einer in der CoutnerCreationDataCollection vorhanden ist.Wie werden Durchschnittszähler für Leistungsindikatoren mit ihrer Basis verknüpft?

Ein paar Fragen:
1. Zunächst ist dies eine richtige Art und Weise, es zu tun? Die Samples, die ich gefunden habe, haben alle nur einen durchschnittlichen Timer.
2. Und wenn die Antwort auf die erste Frage ja ist, dann bin ich richtig in der Annahme, dass der erste AverageBase-Zähler nach AverageTimer32 der Sammlung hinzugefügt wurde? Ich habe in einem Artikel eine Referenz gefunden, die in der Reihenfolge hinzugefügt werden muss.

Hier ist ein Beispiel dafür, was ich zu tun versucht:

var dataColl = new CounterCreationDataCollection 
{ 
    new CounterCreationData 
    { 
    CounterType = PerformanceCounterType.AverageTimer32, 
    CounterName = "AverageTime1", 
    CounterHelp = "AverageTime1_Help" 
    }, 
    new CounterCreationData   // Does this get linked to AverageTime1 simply 
            // because it is being added after it? 
    { 
    CounterType = PerformanceCounterType.AverageBase, 
    CounterName = "AverageTime1Base" 
    }, 
    new CounterCreationData 
    { 
    CounterType = PerformanceCounterType.AverageTimer32, 
    CounterName = "AverageTime2", 
    CounterHelp = "AverageTime2_Help" 
    }, 
    new CounterCreationData 
    { 
    CounterType = PerformanceCounterType.AverageBase, 
    CounterName = "AverageTime2_Base" 
    }, 
} 

PerformanceCounterCategory.Create(
          "MyCategoryName" 
          , "My Category Help" 
          , PerformanceCounterCategoryType.SingleInstance 
          , dataColl); 

Antwort

18

Position. Auf die Leistungsindikatoren, die eine Basis erfordern, muss sofort die Basis in der Definitionsliste folgen. Damit Ihr Code korrekt ist, haben Sie zwei AverageTimer32, gefolgt von AverageBase.

Als eine Randnotiz, wenn Sie gelangweilt werden, den gleichen Code immer und immer wieder zu tippen, sollten Sie Using XSLT to generate Performance Counters code betrachten.