C#获取CPU的利用率

        [STAThread]
        public static void Main()
        {
            string path = AppDomain.CurrentDomain.BaseDirectory;  //获取基目录          
            PerformanceCounter pc
            = new PerformanceCounter(CategoryName, CounterName, InstanceName);
            while (true)
            {
                Thread.Sleep(1000); // wait for 1 second
                float cpuLoad = pc.NextValue();
                Say("CPU load = " + cpuLoad + " %." );
            }
           
        }

        private const string CategoryName = "Processor";
        private const string CounterName = "% Processor Time";
        private const string InstanceName = "_Total";

        private static void Say(string txt)
        {
            Console.WriteLine(txt);
        }

        private static void Say()
        {
            Say("");
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 System.Diagnostics 命名空间下的 PerformanceCounter 类来获取系统 CPU 利用率,并结合 Timer 类实现每秒更新。具体步骤如下: 1. 引入 System.Diagnostics 和 System.Timers 命名空间: ``` using System.Diagnostics; using System.Timers; ``` 2. 创建 PerformanceCounter 对象: ``` PerformanceCounter cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); ``` 其中,第一个参数 "Processor" 表示 CPU 监视器,第二个参数 "% Processor Time" 表示 CPU 使用率,第三个参数 "_Total" 表示所有 CPU 核心的总体使用率。 3. 创建 Timer 对象: ``` Timer timer = new Timer(1000); ``` 其中,1000 表示每隔 1000ms(即每秒)触发一次事件。 4. 绑定 Elapsed 事件处理方法: ``` timer.Elapsed += new ElapsedEventHandler(OnTimerElapsed); ``` 5. 实现 Elapsed 事件处理方法,读取并更新 CPU 使用率: ``` void OnTimerElapsed(object sender, ElapsedEventArgs e) { float cpuUsage = cpuCounter.NextValue(); Console.WriteLine("CPU 使用率:{0}%", cpuUsage); } ``` 注意,第一次调用 NextValue 方法获取的是 0,因为需要先获取一次初始值,之后才能获取正确的 CPU 使用率。 6. 启动 Timer: ``` timer.Start(); ``` 完整示例代码如下: ``` using System; using System.Diagnostics; using System.Timers; class Program { static PerformanceCounter cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); static void Main(string[] args) { // 获取初始值 cpuCounter.NextValue(); // 创建 Timer Timer timer = new Timer(1000); timer.Elapsed += new ElapsedEventHandler(OnTimerElapsed); timer.Start(); // 等待用户输入 Console.ReadLine(); } static void OnTimerElapsed(object sender, ElapsedEventArgs e) { // 获取 CPU 使用率 float cpuUsage = cpuCounter.NextValue(); Console.WriteLine("CPU 使用率:{0}%", cpuUsage); } } ``` 注意,由于 Timer 是在新线程中触发 Elapsed 事件处理方法的,因此需要将 PerformanceCounter 对象定义为静态变量,以便在不同线程中共享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值