.NET 提供 System.Diagnostics.PerformanceCounter 存取 Windows 效能計數器,可即時讀取 CPU 使用率。
using System;
using System.Diagnostics;
using System.Threading;
public class CpuLoadInfo
{
private const string CategoryName = "Processor";
private const string CounterName = "% Processor Time";
private const string InstanceName = "_Total";
[STAThread]
public static void Main()
{
Console.WriteLine("嘗試建立 PerformanceCounter 實例:");
Console.WriteLine($"類別: {CategoryName}");
Console.WriteLine($"計數器: {CounterName}");
Console.WriteLine($"執行個體: {InstanceName}");
PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName);
Console.WriteLine("效能計數器已建立。");
Console.WriteLine($"CounterType: {pc.CounterType}");
Console.WriteLine($"CounterHelp: {pc.CounterHelp}");
Console.WriteLine("進入測量迴圈...");
while (true)
{
Thread.Sleep(1000); // 每秒取樣一次
float cpuLoad = pc.NextValue();
Console.WriteLine($"CPU 負載 = {cpuLoad} %");
}
}
}
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 %.
_Total 代表所有邏輯處理器的平均值。NextValue() 通常回傳 0,需第二次呼叫才有意義數值。System.Diagnostics 命名空間。