如何用C#实时获取CPU利用率

未知 csdn 2002-12-23

using System;
using System.Diagnostics;
using System.Threading;

public class CpuLoadInfo
{
    // auxiliary print methods
    private static void Say(string txt)
    {
        Console.WriteLine(txt);
    }

    // auxiliary print methods 
    private static void Say()
    {
        Say("");
    }

    // The main method. Command line arguments are ignored.
    [STAThread]
    public static void Main()
    {
        Say("$Id: CpuLoadInfo.cs,v 1.2 2002/08/17 17:45:48 rz65 Exp $");
        Say();

        Say("Attempt to create a PerformanceCounter instance:");
        Say("Category name = " + CategoryName);
        Say("Counter name  = " + CounterName);
        Say("Instance name = " + InstanceName);
        PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName);
        Say("Performance counter was created.");
        Say("Property CounterType: " + pc.CounterType);
        Say();

        Say("Property CounterHelp: " + pc.CounterHelp);
        Say();
        Say("Entering measurement loop.");

        while (true)
        {
            Thread.Sleep(1000); // wait for 1 second
            float cpuLoad = pc.Nextvalue();
            Say("CPU load = " + cpuLoad + " %.");
        }
    }

    // constants used to select the performance counter.
    private const string CategoryName = "Processor";
    private const string CounterName = "% Processor Time";
    private const string InstanceName = "_Total";
}

这是在我计算机上的计算结果:

Entering measurement loop.
CPU load = 0 %.
CPU load = 1.941746 %.
CPU load = 4.854369 %.
CPU load = 10 %.
CPU load = 0 %.
CPU load = 2.999997 %.
CPU load = 0.9900987 %.
CPU load = 0 %.
Contributors: FHL