uso porcentaje nada liberar hacer funciona funcion esta como bajar alto c# cpu-usage performancecounter

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);