¿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()
?
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.
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);
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