在Windows应用程序中,如何获取C#中所有内核上的 ALL进程(不仅仅是一个进程或应用程序)当前的CPU使用总量? (如果可能,不使用任何第三方库)
我只能找到有关单个进程的CPU使用率的问题和解答。例如,this one似乎只是询问正在运行的程序的CPU使用率,而答案不清楚他们的代码收集了什么信息,因此在这种情况下并不是很有用。
但是,如果在其他地方回答了这个问题,我会很乐意接受一个链接。
谢谢!
答案 0 :(得分:1)
在使用PerformanceCounter
类时,NextValue()
方法的第一次调用很可能会返回0。因此,您应该在延迟一段时间后多次调用它以获得适当的度量。
您将需要:
using System.Diagnostics;
using System.Threading;
然后您可以按以下方式获得它:
static void Main(string[] args)
{
var cpuUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total");
Thread.Sleep(1000);
var firstCall = cpuUsage.NextValue();
for (int i = 0; i < 5; i++)
{
Thread.Sleep(1000);
Console.WriteLine(cpuUsage.NextValue() + "%");
}
Console.Read();
}
答案 1 :(得分:0)
using (PerformanceCounter system_cpu_usage = new PerformanceCounter("Processor", "% Processor Time", "_Total"))
{
var first = system_cpu_usage.NextValue();
Thread.Sleep(2500);
// Do something
}
您必须包含一个 var first = system_cpu_usage.NextValue(); 以便继续显示实际值。