如何获得总 CPU 使用量(所有进程)? (C#)

How to get total CPU usage (all processes)? (C#)

在 windows 应用程序中,我如何获得 所有进程 (不只是一个进程或应用程序)的 CPU 总使用量C# 中的核心? (如果可能,不使用任何第三方库)

我只能找到有关 CPU 单个进程用法的问题和答案。例如 this one 似乎只询问 运行 程序的 CPU 用法,并且答案不清楚他们的代码收集了哪些信息,因此在这种情况下它不是很有帮助。

不过,如果这个问题在其他地方得到回答,我会很乐意接受 link。

谢谢!

当您使用 PerformanceCounter class 时, NextValue() 方法的第一次调用很可能会 return 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();
}
using (PerformanceCounter system_cpu_usage = new PerformanceCounter("Processor", "% Processor Time", "_Total"))
            {
                var first = system_cpu_usage.NextValue();
                Thread.Sleep(2500);
                // Do something
                
            }

您必须先包含一个 var = system_cpu_usage.NextValue(); 才能继续显示实际值。