Как получить общее использование процессора (все процессы)? (С #) - PullRequest
0 голосов
/ 05 июля 2018

В приложении Windows, как получить ВСЕГО текущего использования ЦП ВСЕХ процессов (не только одного процесса или приложения) на ВСЕХ ядрах в C #? (без использования сторонних библиотек, если это возможно)

Я мог только найти вопросы и ответы об использовании процессора одним процессом. Например, этот , по-видимому, запрашивает использование ЦП только работающей программой, и ответы неясно, какую информацию собирает их код, поэтому в данном случае это не очень полезно.

Хотя, если на этот вопрос ответят где-то еще, я с радостью приму ссылку.

Спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

Когда вы используете класс 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();
}
...