Share via


Procédure pas à pas : récupération de catégories et de compteurs

Mise à jour : novembre 2007

Les procédures décrites ici expliquent le processus de création et de configuration des instances du composant PerformanceCounter et l'utilisation de ces instances pour récupérer des listes de catégories de compteurs de performance et de compteurs de votre système. Le mécanisme par lequel Windows collecte les données de performance relatives aux différentes ressources système est appelé compteur de performance. Windows contient un ensemble de compteurs prédéfinis, organisés en catégories, avec lesquels vous pouvez interagir. Chaque catégorie et chaque compteur se rapportent à une partie bien spécifique des fonctionnalités système.

Dans cette procédure pas à pas, vous apprendrez à :

  • instancier un composant PerformanceCounter et le configurer pour interagir avec une catégorie donnée de compteurs générés par le système ;

  • créer une application Windows qui affiche des informations sur les catégories et les compteurs dans une zone de liste ;

  • utiliser la méthode GetCategories pour retourner une liste de catégories figurant sur l'ordinateur local ;

  • utiliser la méthode GetCounters pour retourner une liste de compteurs issus de la catégorie spécifiée.

Pour créer votre application Windows

  1. À partir de la boîte de dialogue Nouveau projet, créez une application WindowsVisual Basic, Visual C# ou Visual J#.

  2. À partir de l'onglet Windows Forms de la boîte à outils, ajoutez deux boutons et deux zones de liste à votre formulaire. Organisez-les dans l'ordre de votre choix, puis définissez les propriétés suivantes pour ceux-ci :

    Contrôle

    Propriété

    Valeur

    Button1

    Name

    btnGetCounters

     

    Text

    Extraire les compteurs

    Button2

    Name

    btnGetCategories

     

    Text

    Extraire les catégories

    ListBox1

    Name

    lstCounters

     

    ScrollAlwaysVisible

    True

    ListBox2

    Name

    lstCategories

     

    ScrollAlwaysVisible

    True

  3. Enregistrez votre travail.

Pour récupérer la liste de catégories

  1. En mode Design, double-cliquez sur le bouton Extraire les catégories pour accéder à l'éditeur de code.

  2. Dans la version Visual J#, en haut de l'écran, ajoutez une instruction import référençant l'espace de noms System.Diagnostics.

  3. Dans la procédure btnGetCategories_Click, ajoutez le code suivant pour récupérer la liste de catégories de l'ordinateur local.

    Private Sub btnGetCategories_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnGetCategories.Click
    
       Dim myCat2 As PerformanceCounterCategory()
       Dim i As Integer
       ' Remove the current contents of the list.
       Me.lstCategories.Items.Clear()
       ' Retrieve the categories.
       myCat2 = PerformanceCounterCategory.GetCategories
       ' Add the retrieved categories to the list.
       For i = 0 To myCat2.Length - 1
          Me.lstCategories.Items.Add(myCat2(i).CategoryName)
       Next
    End Sub
    
    private void btnGetCategories_Click(object sender, System.EventArgs e)
    {
       System.Diagnostics.PerformanceCounterCategory[] myCat2;
       // Remove the current contents of the list.
       this.lstCategories.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.lstCategories.Items.Add(myCat2[i].CategoryName);
       }
    }
    

Pour récupérer la liste de compteurs

  1. En mode Design, double-cliquez sur le bouton Extraire les compteurs pour accéder à l'éditeur de code. Le point d'insertion est positionné dans l'événement btnGetCounters_Click.

  2. Ajoutez le code suivant pour récupérer la liste de compteurs de la catégorie sélectionnée.

    Private Sub btnGetCounters_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnGetCounters.Click
    
       Dim instanceNames() As String
       Dim counters As New System.Collections.ArrayList()
    
       If (Me.lstCategories.SelectedIndex <> -1) Then
          Dim mycat As New PerformanceCounterCategory( _
             Me.lstCategories.SelectedItem.ToString())
          ' Remove the current contents of the list.
          Me.lstCounters.Items.Clear()
          ' Retrieve the counters.
          Try
             instanceNames = mycat.GetInstanceNames()
             If (instanceNames.Length = 0) Then
                counters.AddRange(mycat.GetCounters())
             Else
                Dim i As Integer
                For i = 0 To instanceNames.Length - 1
                   counters.AddRange( _
                      mycat.GetCounters(instanceNames(i)))
                Next
             End If
             ' Add the retrieved counters to the list.
             Dim counter As PerformanceCounter
             For Each counter In counters
                Me.lstCounters.Items.Add(counter.CounterName)
             Next
          Catch ex As Exception
             MessageBox.Show( _
                "Unable to list the counters for this category:" _
                & ControlChars.CrLf & ex.Message)
          End Try
       End If
    End Sub
    
    private void btnGetCounters_Click(object sender, System.EventArgs e)
    {
       string[] instanceNames;
       System.Collections.ArrayList counters = new 
          System.Collections.ArrayList();
       if (this.lstCategories.SelectedIndex != -1) 
       {
          System.Diagnostics.PerformanceCounterCategory mycat = new 
             System.Diagnostics.PerformanceCounterCategory(
             this.lstCategories.SelectedItem.ToString());
          // Remove the current contents of the list.
          this.lstCounters.Items.Clear();
          // Retrieve the counters.
          try 
          {
             instanceNames = mycat.GetInstanceNames();
             if (instanceNames.Length == 0) 
             {
                counters.AddRange(mycat.GetCounters());
             }
             else
             {
                for (int i = 0; i < instanceNames.Length; i++)
                {
                   counters.AddRange(mycat.GetCounters(instanceNames[i]));
                }
             }
    
             // Add the retrieved counters to the list.
             foreach (System.Diagnostics.PerformanceCounter counter 
                in counters) 
             {
                this.lstCounters.Items.Add(counter.CounterName);
             }
          }
          catch (System.Exception ex)
          {
             MessageBox.Show(
                "Unable to list the counters for this category:\n" 
                + ex.Message);
          }
       }
    }
    

Pour tester votre application

  1. Enregistrez et compilez votre application.

  2. Cliquez sur le bouton Extraire les catégories. Vous devez normalement voir s'afficher une liste de catégories dans la zone de liste.

  3. Sélectionnez l'une des catégories et cliquez sur le bouton Extraire les compteurs. Vous devez normalement voir s'afficher une liste de compteurs pour la catégorie sélectionnée.

Voir aussi

Concepts

Introduction à l'analyse des seuils de performance

Autres ressources

Analyse des seuils de performance

Procédures des compteurs de performance