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

时间:2018-07-05 13:52:27

标签: c# windows visual-studio cpu-usage

在Windows应用程序中,如何获取C#中所有内核上的 ALL进程(不仅仅是一个进程或应用程序)当前的CPU使用总量? (如果可能,不使用任何第三方库)

我只能找到有关单个进程的CPU使用率的问题和解答。例如,this one似乎只是询问正在运行的程序的CPU使用率,而答案不清楚他们的代码收集了什么信息,因此在这种情况下并不是很有用。

但是,如果在其他地方回答了这个问题,我会很乐意接受一个链接。

谢谢!

2 个答案:

答案 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(); 以便继续显示实际值。