2016-05-03 40 views
0

使用這樣的代碼如何獲取作爲taskmgr的CPU使用情況? C#

PerformanceCounter cpu_utilized = new PerformanceCounter("Processor", @"% Processor Time", @"_Total"); 
CounterSample a1 = cpu_utilized.NextSample(); 
Thread.Sleep(500); //tried other values, same result 
float a = CounterSample.Calculate(a1, cpu_utilized.NextSample()); 
string str = "CPU USAGE %: " + a; 
System.Console.Out.WriteLine(str); 

的結果是一樣的PERFMON.EXE計數器,但是從taskmgr值不同

我想總的系統CPU使用率由taskmgr顯示,已經嘗試過只使用NextValue()而不是結果是一樣的...

有關如何做的建議?我應該找到一些其他的計數器,並添加到它或什麼?

更多信息: 我使用的是4個物理內核和8個邏輯核心 一個CPU的Windows 10 性能監視器顯示了36%左右 Taskmgr顯示約48%

回答

0

聖保羅,嘗試看看process hacker。 搶佔CPU使用率將成爲問題之一,處理工作集,物理內存,分頁,tlb等問題的難度會增加十幾倍。

源代碼已用C編寫,而不是C#。但是,您可以輕鬆使用它。 我不是C#專家,但我確信它在後臺使用C API,如果有這種語言的API。

相關問題