2012-03-19 156 views
6

要通過使用WMI返回CPU使用情況,是否從Win32_PerfFormattedData_PerfOS_Processor返回PercentProcessorTime?如果不是,我應該看哪一類?謝謝。使用C#返回WMI中的CPU使用情況

+0

試試看[在這個問題這裏](http://stackoverflow.com/questions/278071/how-to-get-the-cpu-usage-in-c)。它應該回答你的問題 – Icemanind 2012-03-19 20:50:42

+0

是的[Win32_PerfFormattedData_PerfOS_Processor](http://msdn.microsoft.com/en-us/library/windows/desktop/aa394271%28v=vs.85%29.aspx)WMI類是正確的獲得CPU使用率。 – RRUZ 2012-03-19 20:52:01

回答

13
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(); 
+0

謝謝,這幾乎是我如何設置我的。 – jpavlov 2012-03-20 12:14:22

+1

還可以這樣做:new ManagementObjectSearcher(「SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor WHERE Name ='_ Total'」)。Get()。Cast ()。First()。Properties [「PercentProcessorTime」]。Value.ToString(); .Properties [「PercentProcessorTime」] .Value.ToString() – Sevin7 2014-09-07 11:06:19

1

這似乎是信息的也可以在這裏WMI:

"select LoadPercentage from Win32_Processor"

「每個處理器的負載能力,平均爲最後一秒。處理器負載指的是每個處理器的總計算負擔在同一時間 「

OR:

"select LoadPercentage from CIM_Processor"

」。處理器的載入中,平均超過最後一分鐘,以百分比表示。「

OR:

"select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor"也似乎工作。


注:這些經常回每個CPU核心的多個結果和必須相加,得到該系統作爲一個整體的總CPU使用率,所以找了點。

這個問題和答案確實有更多與WMI有關,因爲從WMI與C#獲取信息實際上是一個不同的問題,應該對於C#中的任何WMI查詢都非常相似。

相關問題