2010-06-10 7 views
5

J'ai besoin d'un moyen simple de vérifier combien ram et rapide le CPU du PC hôte est. J'ai essayé WMI cependant le code que j'utiliseComment puis-je obtenir la vitesse du processeur et le RAM physique total en C#?

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

} 

Lève une exception de référence null. En outre, les requêtes WMI sont un peu lentes et je dois en faire quelques unes pour obtenir toutes les spécifications. Y a-t-il un meilleur moyen?

Répondre

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

RAM se trouvent dans cette question SO: How do you get total amount of RAM the computer has?

+0

Merci, j'ai utilisé ce code pour la vitesse du processeur. – edude05

+0

Vous ne savez pas si la classe "ManagementObject" est la meilleure solution, car elle dépend du service Windows Management Instrumentation. Si le service est arrêté ou ne fonctionne pas, votre code ne fonctionnerait pas comme prévu. Je préférerais l'approche du compteur de performance, mais je voudrais savoir comment l'utilisation de ManagementObject est répandue? –

2

Vous devez utiliser PerformanceCounter classe dans 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

Ce code ne définit pas le processeur et la quantité de RAM. Il montre combien de RAM (Processeur) sont disponibles (utilisés) maintenant. –

1

beaucoup sur le processeur, y compris sa vitesse dans MHZ disponible sous HKEY_LOCAL_MACHINE \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor

Je cours 2 Win7x64 pcs et pour une raison quelconque la requête WMI montre un nombre vague la première fois que j'exécute le code et la vitesse du processeur correct la deuxième fois que je l'exécute? En ce qui concerne les compteurs de performance, j'ai travaillé BEAUCOUP avec les compteurs de réseau et obtenu des résultats précis et j'ai finalement dû trouver une meilleure solution, donc je ne leur fais pas confiance!

+0

Vous mentionnez que vous avez fini par utiliser une solution différente pour surveiller les compteurs de réseau. Cela vous dérangerait-il de partager ce que vous avez fini par utiliser? –

+0

hey @ JimScott, haha ​​tout à fait une vieille histoire vraiment. L'application a fait un peu de surveillance de la bande passante dans le cadre de son travail. Je crois que j'ai remarqué que les compteurs de performance ** pour le réseau ** étaient désactivés dans les cas instantanés et a écrit quelque chose qui m'a donné une moyenne de plusieurs appels au fil du temps. J'espère que cela vous aidera dans votre cas. – gideon