Чтобы вернуть использование ЦП с помощью WMI, возвращаю ли значение PercentProcessorTime из Win32_PerfFormattedData_PerfOS_Processor? Если нет, на каком классе я должен смотреть? Спасибо.
Возвращение использования ЦП в WMI с использованием С#
Ответ 1
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);
}
И для любителей Линка
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();
Ответ 2
Похоже, что информация также доступна в WMI здесь:
"select LoadPercentage from Win32_Processor"
"Грузоподъемность каждого процессора, усредненная до последней секунды. Загрузка процессора относится к общей вычислительной нагрузке для каждого процессора за один раз".
ИЛИ
"select LoadPercentage from CIM_Processor"
"Загрузка процессора, усредненная за последнюю минуту, в процентах".
ИЛИ
"select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor"
также работает.
Примечание. они часто возвращают несколько результатов на ядро процессора и должны быть суммированы, чтобы получить общее использование ЦП для всей системы, поэтому ищите это.
Этот вопрос и ответ действительно имеют больше общего с WMI, поскольку получение информации от WMI с помощью С# действительно представляет собой другой вопрос и должно быть очень похоже на любой запрос WMI на С#.