Come è possibile utilizzare System.Diagnostics.PerformanceCounter per tenere traccia della memoria e dell'utilizzo della CPU per un processo?Utilizzo di PerformanceCounter per tenere traccia della memoria e dell'utilizzo della CPU per processo?
risposta
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.
Penso che si desidera Windows Management Instrumentation.
EDIT: vedi qui:
come si traccia la memoria di processo e l'utilizzo della CPU con WMI? –
Sì, la tua destra. MSDN mi sta facendo circolare. Finisco di nuovo con i contatori delle prestazioni. –
Eccoci qui. Vedi la mia modifica. –
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
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
@LoveRight funziona ora? –