我正在寻找一种更好的方法来从多个系统(表示不同的CPU等)中使用WMI获取以百分比表示的CPU负载。
我的代码正在运行,但是我认为有一种更好的方法来解决所有CPU使用率(百分比)的问题。
有任何想法吗?
先感谢您!
SelectQuery queryCpuUsage = new SelectQuery("SELECT * FROM Win32_Processor");
ManagementObjectSearcher cpuUsage = new ManagementObjectSearcher(scope, queryCpuUsage);
ManagementObjectCollection cpuUsageCollection = cpuUsage.Get();
foreach (ManagementObject queryObj in cpuUsageCollection)
{
iCPU++;
calcCPU = Convert.ToInt32(queryObj["LoadPercentage"]);
perCPU = perCPU + calcCPU;
}
perCPU = perCPU / iCPU;
cpuUsageCollection.Dispose();
Console.WriteLine("LoadPercentage CPU: {0}", perCPU);
最佳答案
我个人会参加Win32_PerfRawData_PerfOS_Processor类,因为它要精确得多。您将需要同时查询 PercentProcessorTime 和 TimeStamp_Sys100NS 。 Here您可以找到确切的公式。
关于WMI查询-CPU LoadPercentage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9598730/