Freigeben über


Exemplarische Vorgehensweise: Abrufen von Kategorien und Indikatoren

Aktualisiert: November 2007

Die Prozeduren in dieser exemplarischen Vorgehensweise beschreiben das schrittweise Erstellen und Konfigurieren von PerformanceCounter-Komponenteninstanzen. Darüber hinaus wird erläutert, wie Sie damit Listen mit Leistungsindikatorkategorien und Indikatoren auf Ihrem System abrufen können. Mithilfe eines Leistungsindikators erfasst Windows Leistungsdaten verschiedener Systemressourcen. Windows enthält vordefinierte Indikatoren, die in Kategorien zusammengefasst sind, mit denen Sie interagieren können. Jede Kategorie und jeder Indikator bezieht sich auf einen bestimmten Bereich von Systemfunktionen.

In dieser exemplarischen Vorgehensweise werden Sie:

  • Eine PerformanceCounter-Komponente als Instanz definieren und sie so konfigurieren, dass sie mit einer bestimmten Kategorie systemgenerierter Indikatoren zusammenarbeitet.

  • Eine Windows-Anwendung erstellen, die Informationen zu Kategorien und Leistungsindikatoren in einem Listenfeld anzeigt.

  • Mithilfe der GetCategories-Methode auf dem lokalen Computer eine Liste von Kategorien zurückgeben.

  • Mithilfe der GetCounters-Methode eine Liste von Indikatoren der angegebenen Kategorie zurückgeben.

So erstellen Sie die Windows-Anwendung

  1. Erstellen Sie im Dialogfeld Neues Projekt eine Visual Basic-, Visual C#- oder Visual J#-Windows-Anwendung.

  2. Fügen Sie über die Registerkarte Windows Forms der Toolbox Ihrem Formular zwei Schaltflächen und zwei Listenfelder hinzu. Ordnen Sie diese in der gewünschten Reihenfolge an, und legen Sie dann die folgenden Eigenschaften dafür fest:

    Steuerelement

    Eigenschaft

    Wert

    Button1

    Name

    btnGetCounters

     

    Text

    Leistungsindikatoren abrufen

    Button2

    Name

    btnGetCategories

     

    Text

    Kategorien abrufen

    ListBox1

    Name

    lstCounters

     

    ScrollAlwaysVisible

    True

    ListBox2

    Name

    lstCategories

     

    ScrollAlwaysVisible

    True

  3. Speichern Sie Ihre Arbeit.

So rufen Sie die Kategorieliste ab

  1. Doppelklicken Sie in der Entwurfsansicht auf die Schaltfläche Kategorien abrufen. Damit öffnen Sie den Code-Editor.

  2. In der Visual J#-Version fügen Sie am oberen Bildschirmrand eine import-Anweisung hinzu, die auf den System.Diagnostics-Namespace verweist.

  3. Fügen Sie in der btnGetCategories_Click-Prozedur den folgenden Code hinzu, um die Liste der Kategorien vom lokalen Computer abzurufen.

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

So rufen Sie die Indikatorliste ab

  1. Doppelklicken Sie in der Entwurfsansicht auf die Schaltfläche Zähler abrufen. Damit öffnen Sie den Code-Editor. Die Einfügemarke wird im btnGetCounters_Click-Ereignis platziert.

  2. Fügen Sie folgenden Code hinzu, um die Liste der Leistungsindikatoren aus der ausgewählten Kategorie abzurufen.

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

So testen Sie die Anwendung

  1. Speichern und kompilieren Sie die Anwendung.

  2. Klicken Sie auf die Schaltfläche Kategorien abrufen. Im Listenfeld wird eine Liste mit Kategorien angezeigt.

  3. Markieren Sie eine der Kategorien und klicken Sie auf die Schaltfläche Leistungsindikatoren abrufen. Es wird eine Liste der Leistungsindikatoren für die ausgewählte Kategorie angezeigt.

Siehe auch

Konzepte

Einführung in die Überwachung von Leistungsschwellenwerten

Weitere Ressourcen

Überwachen von Leistungsschwellenwerten

Exemplarische Vorgehensweisen für Leistungsindikatoren