Partager via


Comment : récupérer des listes de compteurs et de catégories

Mise à jour : novembre 2007

Vous pouvez utiliser la méthode GetCounters sur la classe PerformanceCounterCategory pour récupérer rapidement une liste de tous les compteurs ou instances dans une catégorie spécifique. Chaque fois que vous demandez une valeur d'une catégorie en créant une instance d'un objet PerformanceCounter, en lui affectant un compteur existant et en récupérant une valeur, le système lit la totalité de la catégorie et récupère le compteur demandé. Cela signifie que si vous demandez cinq compteurs différents d'une catégorie qui en contient vingt, le système lit les vingt compteurs cinq fois en cherchant séparément chaque compteur. À l'aide de GetCounters, vous obtenez les mêmes données, mais la catégorie n'est lue qu'une seule fois.

La méthode GetCounters retourne un tableau de type PerformanceCounter contenant les compteurs de la catégorie. Vous pouvez utiliser la propriété Item pour travailler avec le contenu de la collection.

En plus de récupérer des compteurs, vous pouvez également utiliser la méthode GetCategories statique pour retourner une liste de catégories de l'ordinateur en cours ou de tout serveur auquel vous avez accès. GetCategories retourne un tableau d'objets PerformanceCounterCategory.

Pour récupérer les compteurs d'une catégorie

  1. Créez un objet PerformanceCounter et configurez-le de sorte qu'il pointe vers la catégorie souhaitée. Pour plus d'informations, consultez Comment : créer des instances du composant PerformanceCounter ou Comment : configurer des instances du composant PerformanceCounter.

  2. Créez un tableau de type PerformanceCounter destiné à contenir la liste de catégories résultante.

  3. Appelez la méthode GetCounters sur la classe PerformanceCounterCategory et spécifiez comme paramètre la catégorie souhaitée.

  4. Définissez les résultats du tableau.

    L'exemple suivant montre comment récupérer tous les compteurs de la catégorie Cache. Ce code suppose que vous travaillez dans une application Windows Forms contenant un bouton et un contrôle ListBox. Il suppose également que vous disposez d'une référence à System.dll et d'une instruction Imports (pour Visual Basic) ou d'une instruction using (pour C#) pour l'espace de noms System.Diagnostics :

    Private Sub btnGetCounters_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnGetCounters.Click
       Dim mypc() As PerformanceCounter
       Dim i As Integer
       Dim myCat As New PerformanceCounterCategory("Cache")
       ' Remove the current contents of the list.
       Me.ListBox1.Items.Clear()
       ' Retrieve the counters.
       mypc = myCat.GetCounters
       ' Add the retrieved counters to the list.
       For i = 0 To mypc.Length - 1
          Me.ListBox1.Items.Add(mypc(i).CounterName)
       Next
    End Sub
    
     private void btnGetCounters_Click(object sender, EventArgs e)
        {
            System.Diagnostics.PerformanceCounter[] mypc;
            System.Diagnostics.PerformanceCounterCategory mycat =
               new System.Diagnostics.PerformanceCounterCategory("cache");
            // Remove the current contents of the list.
            this.listBox1.Items.Clear();
            // Retrieve the counters.
            mypc = mycat.GetCounters();
            // Add the retrieved counters to the list.
            for (int i = 0; i < mypc.Length; i++)
            {
                this.listBox1.Items.Add(mypc[i].CounterName);
            }
        }
    

Pour récupérer toutes les catégories sur un ordinateur

  1. Créez un tableau de type PerformanceCounter destiné à contenir la liste de catégories résultante.

  2. Appelez la méthode GetCategories sur la classe PerformanceCounterCategory et spécifiez comme paramètre la catégorie souhaitée.

  3. Définissez les résultats du tableau.

    Le code suivant montre comment récupérer toutes les catégories sur l'ordinateur local. Ce code suppose que vous travaillez dans une application Windows Forms contenant un bouton et un contrôle ListBox. Il suppose également que vous disposez d'une référence à System.dll et d'une instruction Imports (pour Visual Basic) ou d'une instruction using (pour C#) pour l'espace de noms System.Diagnostics :

    Private Sub btnGetCategories_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs)
       Dim myCat2 As PerformanceCounterCategory()
       Dim i As Integer
       ' Clear the contents of the list box.
       Me.listBox2.Items.Clear()
       ' Retrieve the categories.
       myCat2 = PerformanceCounterCategory.GetCategories
       ' Add the retrieved categories to the list.
       For i = 0 To myCat2.Length - 1
          Me.listBox2.Items.Add(myCat2(i).CategoryName)
       Next
    End Sub
    
     private void btnGetCategories_Click(object sender, EventArgs e)
        {
            System.Diagnostics.PerformanceCounterCategory[] myCat2;
            // Clear the list's current contents.
            this.listBox2.Items.Clear();
            // Retrieve the categories.
            myCat2 =
               System.Diagnostics.PerformanceCounterCategory.GetCategories();
            // Add the retrieved categories to the list.
            for (int i = 0; i < myCat2.Length; i++)
            {
                this.listBox2.Items.Add(myCat2[i].CategoryName);
            }
        }
    

Voir aussi

Tâches

Comment : créer des instances du composant PerformanceCounter

Comment : configurer des instances du composant PerformanceCounter

Concepts

Récupération de la valeur d'un compteur de performance