c# - porcentaje - mi cpu esta al 100 windows 10
¿Por qué el contador de rendimiento de la CPU siguió informando 0% de uso de la CPU? (2)
PerformanceCounter cpuload = new PerformanceCounter();
cpuload.CategoryName = "Processor";
cpuload.CounterName = "% Processor Time";
cpuload.InstanceName = "_Total";
Console.WriteLine(cpuload.NextValue() + "%");
La salida siempre es 0%, mientras que cpuload.RawValue
es como 736861484375 más o menos, ¿qué pasó en NextValue()
?
La primera iteración del contador 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ía ver algunos datos que salen. 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 de MSDN :
El método nextValue () siempre devuelve un valor 0 en la primera llamada. Entonces debes llamar a este método por segunda vez.
Primero recupera el primer valor (sería 0)
NextValue();
Luego espere 1000 milisegundos
Thread.Sleep(1000);
Luego recupere el segundo valor, que es el verdadero uso de la CPU.
NextValue();
El código debería verse así:
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);