2010-08-05 13 views

risposta

40

Per per dati di processo:

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)+" %"); 
} 

Contatore delle prestazioni ha anche altri c ounters than Working set e Processor time.

+3

Si noti che è necessario lo stato di sospensione, chiamando NextValue, quindi Sleeping per 500-100, quindi chiamando NextValue per ottenere il valore effettivo, se si chiama NextValue prima di utilizzare quel valore e si continua con il processo successivo, sarà sempre 0 valore per processore%, il valore RAM funziona indipendentemente. – ScottN

+0

I valori che le uscite del codice sono sempre uguali. Sospetto persino la correttezza del codice. Vedi il mio [post] (http://stackoverflow.com/questions/8972239/how-to-use-performance-counter-or-process-class-correctly-in-c-sharp-to-get-memo). – Gqqnbig

+0

@LoveRight funziona ora? –

Problemi correlati