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