Мне нужен простой способ проверить, сколько поршня и быстро ЦП хоста ПК. Я попробовал WMI однако код, который я использую
private long getCPU()
{
ManagementClass mObject = new ManagementClass("Win32_Processor");
mObject.Get();
return (long)mObject.Properties["MaxClockSpeed"].Value;
}
Выдает исключение нулевой ссылки. Кроме того, запросы WMI немного медленны, и я должен сделать некоторых для получения всех спецификаций. Существует ли лучший путь?
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;
}
ОЗУ можно найти в этом вопросе SO: Как получить общий объем оперативной памяти компьютера?
. Вам следует использовать класс PerformanceCounter
в 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";
}
Многое о процессоре, включая его скорость в МГц, доступно в разделе HKEY_LOCAL_MACHINE \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor
Я использую 2 компьютера Win7x64, и по какой-то причине запрос WMI показывает неопределенное число при первом запуске код и правильная скорость процессора при втором запуске?
Что касается счетчиков производительности, я много поработал с сетевыми счетчиками и получил точные результаты, и в конце концов мне пришлось найти лучшее решение, поэтому я им не доверяю!