2010-08-05 4 views

Antwort

40

Für pro Prozessdaten:

Process p = /*get the desired process here*/; 
PerformanceCounter ramCounter = new PerformanceCounter("Process", "Working Set", p.ProcessName); 
PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName); 
while (true) 
{ 
    Thread.Sleep(500); 
    double ram = ramCounter.NextValue(); 
    double cpu = cpuCounter.NextValue(); 
    Console.WriteLine("RAM: "+(ram/1024/1024)+" MB; CPU: "+(cpu)+" %"); 
} 

Leistungsindikator hat auch andere c ounters als Arbeitssatz und Prozessorzeit.

+3

Es sollte beachtet werden, dass der Sleep erforderlich ist, NextValue, dann Sleeping für 500-100, dann NextValue aufrufen, um den tatsächlichen Wert zu erhalten funktioniert, wenn Sie NextValue zuerst dann diesen Wert verwenden und mit dem nächsten Prozess fortfahren, wird es immer sein 0 Wert für Prozessor%, der RAM-Wert funktioniert unabhängig. – ScottN

+0

Die Werte der Code-Ausgänge sind immer gleich. Ich vermute sogar die Korrektheit des Codes. Siehe mein [post] (http://stackoverflow.com/questions/8972239/how-to-use-performance-counter-or-process-class-correctly-in-c-sharp-to-get-memo). – Gqqnbig

+0

@LoveRight funktioniert das jetzt? –

Verwandte Themen