2010-03-10 5 views
18

J'ajoute des compteurs de performance à mon projet C# et je crée une nouvelle classe PerformanceCounter. Dans cette catégorie, j'aimerais avoir plusieurs compteurs/minuteurs qui suivent différentes choses. J'ai besoin d'utiliser plusieurs minuteurs moyens et j'essaie de comprendre comment le compteur AverageBase est associé au bon compteur AverageTimer32 lorsqu'il y en a plus d'un dans le CoutnerCreationDataCollection.Comment les minuteurs moyens du compteur de performance sont-ils associés à leur base?

Quelques questions:
1. Tout d'abord, est-ce une bonne façon de le faire? Les échantillons que j'ai trouvés ont tous une seule minuterie moyenne.
2. Et si la réponse à la première question est oui, alors ai-je raison de penser que le premier compteur AverageBase ajouté à la collection après le AverageTimer32? J'ai trouvé une référence dans un article à ceux qui ont besoin d'être ajouté dans l'ordre.

Voici un exemple de ce que je suis en train de faire:

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); 

Répondre

18

Position. Les compteurs qui nécessitent une base doivent être suivis immédiatement par la base dans la liste de définition. Donc, votre code est correct, vous avez deux AverageTimer32, chacun suivi par AverageBase.

Comme une note de côté, quand vous vous ennuyez de taper le même code encore et encore, vous devriez envisager Using XSLT to generate Performance Counters code.

Questions connexes