如何将CPU使用率作为taskmgr? C#

时间:2016-05-03 19:09:36

标签: c# performancecounter

使用像这样的代码

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值

不同

我希望得到taskmgr显示的总系统CPU使用率,已经尝试过仅使用NextValue()但结果是相同的......

有关如何操作的建议吗?我应该找一些其他的计数器并添加它或什么?

更多信息: 我正在使用具有4个物理内核和8个逻辑内核的CPU Windows 10 Perfmon显示约36% Taskmgr显示大约48%

1 个答案:

答案 0 :(得分:0)

保罗,试着看看process hacker。 抓住CPU使用率将是问题之一,处理工作集,物理内存,分页,tlb等的问题要复杂十倍。

源代码是用C语言编写的,而不是用C#编写的。但是您可以轻松使用它。 我不是C#专家,但我确信它在幕后使用了C API,如果有这种api语言的话。