"Nichts leichter als das", sprach Pickeldi zu Frederick und öffnete sein Visual Studio. Falls Du die Antwort noch gebrauchen kannst, hier die sehr einfach Lösung: Performance Counter. Über diese netten Systemobjekte kannst Du alles abfragen, was das Herz begehrt. Hier ein kleines Beispiel ohne Fehlerprüfung u.ä., das Dir im Sekundentakt die CPU-Last auf die Konsole ausgibt:
Code:
using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
// Performance counter erzeugen
PerformanceCounter cpu = new PerformanceCounter();
// Namen des abzufragenden Rechners im Netz ("." = lokaler Rechner)
cpu.MachineName = ".";
// Categoriename (s.u.)
cpu.CategoryName = "Process";
// Countername (s.u.)
cpu.CounterName = "% Processor Time";
// Instanzname (in diesem Fall der Name des Prozesses)
cpu.InstanceName = "Idle";
// Initialisierung
cpu.NextValue();
while(true)
{
// nächsten berechneten Wert abrufen und ausgeben
Console.WriteLine((100.0 - cpu.NextValue()).ToString());
// Eine Sekunde lang warten
System.Threading.Thread.Sleep(1000);
}
}
}
}
PerformanceCounter sind in Kategorien aufgeteilt, z.B. wie oben "Process" für alles, was mit laufenden Prozessen zusammenhängt oder "Network Interface" für den Datenverkehr über Netzadapter usw. Unterhalb jeder Kategorie findet man gewöhnlich mehrere Counter, je nachdem, welche Information man sucht. Für "Network Interface" gäbe es beispielsweise "Bytes Received/sec" ebenso wie "Bytes Sent/sec" usw. Man braucht sich nur die richtigen rauszupicken. Die Eigenschaft "InstanceName" bezieht sich dann auf die Instanz, von der man Informationen haben will. Bei der Kategorie "Process" ist das der Prozessname, bei "Network Interface" der Name des Netzwerkadapters, bei "LogicalDisk" der Name der Partition usw.
Woher die ganzen Kategorien und Counternamen bekommen? Zum einen bietet der Namespace "Diagnostics" (s.o.) eine Vielzahl von Funktionen, um alle vorhandenen Kategorien, Counters und Instanzen auszulesen (so kommt man z.B. auch an die Namen der laufenden Prozesse, an die eingebauten Festplatten, Netzwerkkarten usw.), zum anderen kann man sie sich auch von Hand heraussuchen. Da gibt's zwei Möglichkeiten:
a) Du hast Visual Studio. Öffne den Server-Explorer, wähle den entsprechenden Rechner aus und sieh nach unter "Leistungsindikatoren". Die aufgeführten Knoten sind die Kategorien, die weiteren Unterknoten die Counter. Per Rechtsklick und "Kategorie anzeigen" auf einen der Knoten bekommst Du sehr detaillierte Informationen, inklusive einer ausführlichen Beschreibung über jeden Counter etc.
b) Über die Systemsteuerung. Sorry, hab' hier nur die englische Windowsversion, also... Control Panel/Administrative Tools/Performance. Im neuen Fenster links in der Baumansicht "System Monitor" wählen und dann in der rechten Hälfte in der Toolbar "Add" (oder Ctrl+i). Dann siehst Du ebenfalls eine Liste aller Kategorien mit allen Countern und deren Beschreibung. Hier siehst Du übrigens auch gleich die Instanzen auf dem jeweils gewählten Rechner.
Gruß, Picke... ähm Jehova