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
Erstellen Sie im Dialogfeld Neues Projekt eine Visual Basic-, Visual C#- oder Visual J#-Windows-Anwendung.
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
Speichern Sie Ihre Arbeit.
So rufen Sie die Kategorieliste ab
Doppelklicken Sie in der Entwurfsansicht auf die Schaltfläche Kategorien abrufen. Damit öffnen Sie den Code-Editor.
In der Visual J#-Version fügen Sie am oberen Bildschirmrand eine import-Anweisung hinzu, die auf den System.Diagnostics-Namespace verweist.
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
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.
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
Speichern und kompilieren Sie die Anwendung.
Klicken Sie auf die Schaltfläche Kategorien abrufen. Im Listenfeld wird eine Liste mit Kategorien angezeigt.
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