2012-03-19 44 views
6

Para devolver el uso de la CPU mediante WMI, ¿devuelvo el PercentProcessorTime de Win32_PerfFormattedData_PerfOS_Processor? Si no, ¿a qué clase debo mirar? Gracias.Devolver el uso de la CPU en WMI con C#

+0

Intenta mirar [aquí en esta pregunta] (http://stackoverflow.com/questions/278071/how-to-get-the-cpu-usage-in-c). Debería responder a su pregunta – Icemanind

+0

Sí, la clase WMI [Win32_PerfFormattedData_PerfOS_Processor] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394271%28v=vs.85%29.aspx) es el adecuado para obtener el uso de la CPU. – RRUZ

Respuesta

13
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor"); 
foreach (ManagementObject obj in searcher.Get()) 
{ 
    var usage = obj["PercentProcessorTime"]; 
    var name = obj["Name"]; 
    Console.WriteLine(name +" : " + usage); 
} 

Y para los amantes de Linq

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor"); 
var cpuTimes = searcher.Get() 
    .Cast<ManagementObject>() 
    .Select(mo => new 
     { 
      Name = mo["Name"], 
      Usage = mo["PercentProcessorTime"] 
     } 
    ) 
    .ToArray(); 
+0

Gracias, así es como configuré la mía. – jpavlov

+1

También se puede hacer: nuevo ManagementObjectSearcher ("SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor WHERE Name = '_ Total'"). Get(). Cast (). First(). Properties ["PercentProcessorTime"]. Value.ToString(); .Properties ["PercentProcessorTime"] .Value.ToString() – Sevin7

1

parece que la información es también disponible en WMI aquí:

"select LoadPercentage from Win32_Processor"

"Capacidad de carga de cada procesador, promediada al último segundo. carga del procesador se refiere a la carga de cómputo total para cada procesador en un tiempo "

OR:

"select LoadPercentage from CIM_Processor"

". La carga del procesador, de promedio el último minuto, en un porcentaje. "

O:

"select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor" parece que también funciona.


Nota: estos a menudo devolver varios resultados por núcleo de CPU y tienen que ser sumadas para obtener el uso total de la CPU para el sistema en su conjunto, a fin de buscar eso.

Esta pregunta y respuesta realmente tiene más que ver con WMI, ya que obtener información de WMI con C# es realmente una pregunta diferente y debería ser muy similar para cualquier consulta WMI en C#.