Gewusst wie: Abrufen von Indikator- und Kategorielisten
Aktualisiert: November 2007
Sie können die GetCounters-Methode auf die PerformanceCounterCategory-Klasse anwenden, um rasch eine Liste aller Indikatoren oder Instanzen in einer bestimmten Kategorie abzurufen. Jedes Mal, wenn Sie einen Wert in einer Kategorie abfragen, indem Sie eine Instanz eines PerformanceCounter-Objekts erstellen, sie auf einen vorhandenen Indikator festlegen und den Wert abrufen, liest das System die gesamte Kategorie und ruft den gewünschten Indikator ab. Infolgedessen werden bei einer Abfrage von fünf verschiedenen Leistungsindikatoren in einer Kategorie mit 20 Leistungsindikatoren alle Leistungsindikatoren in der Kategorie fünfmal vom System gelesen, da nach jedem Leistungsindikator separat gesucht wird. Die Verwendung von GetCounters liefert die gleichen Daten, die Kategorie wird jedoch nur einmal gelesen.
Die GetCounters-Methode gibt ein Array des Typs PerformanceCounter zurück, das die Leistungsindikatoren in der Kategorie enthält. Mithilfe der Item-Eigenschaft können Sie mit dem Inhalt der Auflistung arbeiten.
Neben dem Abrufen von Leistungsindikatoren können Sie die statische GetCategories-Methode auch zum Zurückgeben einer Liste der Kategorien auf dem aktuellen Computer oder einem beliebigen Server verwenden, für den Sie zugriffsberechtigt sind. GetCategories gibt ein Array von PerformanceCounterCategory-Objekten zurück.
So rufen Sie die Leistungsindikatoren in einer Kategorie ab
Erstellen Sie ein PerformanceCounter-Objekt, und konfigurieren Sie es so, dass es auf die gewünschte Kategorie zeigt. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Instanzen von PerformanceCounter-Komponenten oder unter Gewusst wie: Konfigurieren von Instanzen von PerformanceCounter-Komponenten.
Erstellen Sie ein Array des Typs PerformanceCounter, das die Ergebniskategorieliste enthalten soll.
Rufen Sie die GetCounters-Methode der PerformanceCounterCategory-Klasse auf, und geben Sie die gewünschte Kategorie als Parameter an.
Legen Sie das Ergebnis auf das Array fest.
Das folgende Beispiel veranschaulicht, wie Sie alle Indikatoren in der Cache-Kategorie abrufen können. In diesem Code wird vorausgesetzt, dass Sie in einer Windows Forms-Anwendung mit einer Schaltfläche und einem ListBox-Steuerelement arbeiten. Außerdem wird vorausgesetzt, dass ein Verweis auf System.dll und eine Imports-Anweisung (in Visual Basic) oder eine using-Anweisung (in C#) für den System.Diagnostics-Namespace vorhanden ist:
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); } }
So rufen Sie alle Kategorien auf einem Computer ab
Erstellen Sie ein Array des Typs PerformanceCounter, das die Ergebniskategorieliste enthalten soll.
Rufen Sie die GetCategories-Methode der PerformanceCounterCategory-Klasse auf, und geben Sie die gewünschte Kategorie als Parameter an.
Legen Sie das Ergebnis auf das Array fest.
Anhand des folgenden Codes wird gezeigt, wie alle Kategorien auf dem lokalen Computer abgerufen werden. In diesem Code wird vorausgesetzt, dass Sie in einer Windows Forms-Anwendung mit einer Schaltfläche und einem ListBox-Steuerelement arbeiten. Außerdem wird vorausgesetzt, dass ein Verweis auf System.dll und eine Imports-Anweisung (in Visual Basic oder eine using-Anweisung (in C#) für den System.Diagnostics-Namespace vorhanden ist:
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); } }
Siehe auch
Aufgaben
Gewusst wie: Erstellen von Instanzen von PerformanceCounter-Komponenten
Gewusst wie: Konfigurieren von Instanzen von PerformanceCounter-Komponenten