2010-06-10 23 views
5

Necesito una manera simple de comprobar cuánto RAM y rápido es la CPU de la PC host. Probé WMI sin embargo, el código que estoy usando¿Cómo obtengo la velocidad de la CPU y la ram física total en C#?

private long getCPU() 
{ 
    ManagementClass mObject = new ManagementClass("Win32_Processor"); 
    mObject.Get(); 
    return (long)mObject.Properties["MaxClockSpeed"].Value; 

} 

Lanza una excepción de referencia nula. Además, las consultas de WMI son un poco lentas y necesito hacer algunas para obtener todas las especificaciones. ¿Hay una mejor manera?

Respuesta

6

http://dotnet-snippets.com/dns/get-the-cpu-speed-in-mhz-SID575.aspx

using System.Management; 

public uint CPUSpeed() 
{ 
    ManagementObject Mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'"); 
    uint sp = (uint)(Mo["CurrentClockSpeed"]); 
    Mo.Dispose(); 
    return sp; 
} 

memoria RAM se puede encontrar en esta cuestión de forma: How do you get total amount of RAM the computer has?

+0

Gracias, utilicé este código para la velocidad de la CPU. – edude05

+0

No estoy seguro de si la clase "ManagementObject" es la mejor opción, ya que depende del servicio Instrumental de administración de Windows. Si el servicio se detiene o no se está ejecutando, su código no funcionaría como se esperaba. Preferiría el enfoque del contador de rendimiento pero me gustaría saber cómo es el uso frecuente de ManagementObject. –

2

Debe utilizar PerformanceCounter clase en System.Diagnostics

PerformanceCounter cpuCounter; 
PerformanceCounter ramCounter; 

cpuCounter = new PerformanceCounter(); 

cpuCounter.CategoryName = "Processor"; 
cpuCounter.CounterName = "% Processor Time"; 
cpuCounter.InstanceName = "_Total"; 

ramCounter = new PerformanceCounter("Memory", "Available MBytes"); 


public string getCurrentCpuUsage(){ 
      cpuCounter.NextValue()+"%"; 
} 

public string getAvailableRAM(){ 
      ramCounter.NextValue()+"MB"; 
} 
+3

Este código no define el procesador y la cantidad de RAM. Muestra la cantidad de RAM (Procesador) disponible (usada) ahora. –

1

mucho sobre el procesador que incluye su velocidad en MHz disponible bajo HKEY_LOCAL_MACHINE \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor

Estoy ejecutando 2 PC Win7x64 y por alguna razón la consulta WMI muestra un número impreciso la primera vez que ejecuto el código y la velocidad correcta del procesador la segunda vez que lo ejecuto?

Cuando se trata de contadores de rendimiento, trabajé MUCHO con los contadores de red y obtuve resultados precisos y finalmente tuve que encontrar una mejor solución, ¡así que no confío en ellos!

+0

Menciona que terminó usando una solución diferente para monitorear los contadores de red. ¿Te importaría compartir lo que terminaste usando? –

+0

hey @JimScott, jaja una historia bastante vieja realmente. La aplicación hizo un poco de control de ancho de banda como parte de su trabajo. Creo que noté que los contadores de rendimiento ** para la red ** estaban apagados en casos instantáneos y escribí algo que me dio un promedio de llamadas múltiples a lo largo del tiempo. Espero que ayude en tu caso. – gideon

Cuestiones relacionadas