¿Por qué el contador de rendimiento de la cpu siguió reportando 0% de uso de la cpu?


PerformanceCounter cpuload = new PerformanceCounter();
cpuload.CategoryName = "Processor";
cpuload.CounterName = "% Processor Time";
cpuload.InstanceName = "_Total";
Console.WriteLine(cpuload.NextValue() + "%");

La salida es siempre 0%, mientras que el cpuload.RawValue es como 736861484375 o así, ¿qué sucedió en NextValue()?

Author: Breeze, 2010-02-02

2 answers

La primera iteración del contador he siempre será 0, porque no tiene nada que comparar con el último valor. Prueba esto:

var cpuload = new PerformanceCounter("Processor", "% Processor Time", "_Total");
Console.WriteLine(cpuload.NextValue() + "%");
Console.WriteLine(cpuload.NextValue() + "%");
Console.WriteLine(cpuload.NextValue() + "%");
Console.WriteLine(cpuload.NextValue() + "%");
Console.WriteLine(cpuload.NextValue() + "%");

Entonces deberías ver algunos datos saliendo. Está hecho para ser visto en un gráfico constante o escenario actualizado...es por eso que no te encuentras con este problema a menudo.

Aquí está la referencia MSDN :

El método NextValue () siempre devuelve un valor 0 en la primera llamada. Así que tiene que llamar a este método un segundo tiempo.

 37
Author: Nick Craver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-02 04:18:43

Primero recupere el primer valor (sería 0)

NextValue();

Luego espere 1000 milisec

Thread.Sleep(1000);

A continuación, recuperar el segundo valor que es el verdadero uso de la cpu.

NextValue();

El código debería tener este aspecto:

float perfCounterValue = perfCounter.NextValue();

//Thread has to sleep for at least 1 sec for accurate value.
System.Threading.Thread.Sleep(1000);

perfCounterValue = perfCounter.NextValue();

Console.WriteLine("Value: {0}", perfCounterValue);
 17
Author: Max,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-17 17:45:32