Es gilt zu beachten, dass dieser Code nur einen Counter erstellt. Um mehrere Counter zu generieren, wird einfach der Code für den Sample-Counter kopiert und ins counterData-Array eingefügt. Sämtliche ins counterData-Array eingefügte Counter werden mit dem Aufruf der Create-Methode auf dem PerformanceCounterCategory-Objekt automatisch erstellt.
Ebenfalls zu beachten ist die „SingleInstance“-Menge des Create()-Aufrufs. Für diesen Counter ist dann nur eine Instanz zulässig. Sind mehrere Instanzen erforderlich, wird beim Aufrufen der Create-Methode „SingleInstance“ einfach nur auf „MultiInstance“ geändert.
Nach dem Aufruf der Create()-Methode lässt sich der Counter mit Daten füttern. Der folgende Code zeigt, wie das PerformanceCounter-Objekt richtig instantiiert wird und wie man überprüfen kann, ob es die Kategorie gegenwärtig gibt.
So wird der Performance-Counter instantiiert
In obigem Code wird das PerformanceCounter-Objekt instantiiert, so dass sein Geltungsbereich nicht nur dem Geltungsbereich des Codes entspricht, der an das Objekt sendet. Das ist aus mehrerlei Gründen erforderlich:
Zum Ersten, weil der Code einen Timer verwendet, um Daten an den Performance-Counter zu senden. Daher muss das PerformanceCounter-Objekt auch erreichbar sein, wenn das Tick-Ereignis des Timers ausgelöst wird.
Zum Zweiten kann die Performance der gesamten Anwendung stark beeinträchtigt werden, wenn der Performance-Counter jedes Mal instantiiert wird, bevor der Code ihm etwas sendet (dazu später mehr).
Nun da der Performance-Counter instantiiert ist, kann er mit Inhalten gefüllt werden. Wie bereits erwähnt, geschieht das – wie nachfolgend dargestellt – in der Tick-Methode des Timers.
Die Tick-Methode des Timers
Dieser Code legt die PerformanceCounter.RawValue-Eigenschaft auf die aktuelle Sekunde fest. Dann ändert er das Counter-Intervall, damit der Wert des Counters etwas mehr in Bewegung kommt. Die RawValue-Eigenschaft ist der jeweils aktuelle Wert von PerformanceCounter, also genau der Wert, der vom Counter angezeigt wird.
Bei Produktionsanwendungen ist es sicher von großem Interesse, einige Basiswerte zu speichern, die über den anwenderspezifischen Performance-Counter angezeigt werden. In dem anfangs genannten Parsing-System wäre dann beispielsweise die absolute Gesamtzahl der geparsten Datensätze interessant, ebenso die Gesamtzahl der in der letzten Minute geparsten Datensätze und nach Möglichkeit auch die durchschnittlich benötigte Zeit für das Einfügen eines Datensatzes in die Datenbank. Sämtliche Zahlen werden von unterschiedlichen Countern innerhalb der Performance-Counter-Kategorie der Anwendung erstellt.
Neueste Kommentare
Noch keine Kommentare zu C#: Leistungsdaten von Anwendungen mit Performance-Countern anzeigen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.