0

有人请提供用于在 Windows 窗体的进度条上显示当前 CPU 利用率的代码。我已尝试使用此站点上的解决方案,但遇到了很多错误。不知道代码有什么问题,因为我是 C# 的新手。我将从那里开始我的其余编程,因为我想在那之后重新启动一个特定的 Windows 进程。

多谢

我试过的帖子:

如何在 C# 中获取 CPU 使用率? 需要 C# 代码以在 Windows 窗体应用程序的进度栏中显示 CPU 利用率>progress-bar-of-windows-form-ap

我研究了 PerformanceCounter 和 System.Diagnostics,但我无法正确编码它们。

对不起,我的 C# 知识只有 0.1%。

==================================================== ==============================

我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace CPU_Utilization_Monitor   
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

        int totalHits = 0;

        public object getCPUCOunter()
        {

            PerformanceCounter cpuCounter = new PerformanceCounter();
            cpuCounter.CategoryName = "Processor";
            cpuCounter.CounterName = "% Processor Time";
            cpuCounter.InstanceName = "_Total";

                         // will always start at 0
            dynamic firstValue = cpuCounter.NextValue();
            System.Threading.Thread.Sleep(1000);
                        // now matches task manager reading
            dynamic secondValue = cpuCounter.NextValue();

            return secondValue;

        }


        private void Timer1_Tick(System.Object sender, System.EventArgs e)
        {
            int cpuPercent = (int)getCPUCOunter();
            if (cpuPercent >= 90)
            {
                totalHits = totalHits + 1;
                if (totalHits == 60)
                    MessageBox.Show("ALERT 90% usage for 1 minute");
                totalHits = 0;
            }
            else
            {
                totalHits = 0;
            }

            label1.Text = cpuPercent + " % CPU";
            label3.Text = totalHits + " seconds over 20% usage";

        }

}
}

现在我得到的是:

错误 1 ​​程序“C:\Users\SnowFlake\Documents\Visual Studio 2010\Projects\CPU Utilization Monitor\CPU Utilization Monitor\obj\x86\Debug\CPU Utilization Monitor.exe”不包含适用于入口点 CPU 利用率监视器 <

4

1 回答 1

2

这是一个完整的程序,展示了如何使用PerformanceCounterhttps://stackoverflow.com/a/278088/1336590 中的内容

using System;
using System.Diagnostics;

namespace CpuUsage
{
  class Program
  {
    static void Main(string[] args)
    {
      PerformanceCounter cpuCounter = new PerformanceCounter();
      cpuCounter.CategoryName = "Processor";
      cpuCounter.CounterName = "% Processor Time";
      cpuCounter.InstanceName = "_Total";
      PerformanceCounter ramCounter = new PerformanceCounter("Memory", "Available MBytes");

      var unused = cpuCounter.NextValue(); // first call will always return 0
      System.Threading.Thread.Sleep(1000); // wait a second, then try again
      Console.WriteLine("Cpu usage: " + cpuCounter.NextValue() + "%");
      Console.WriteLine("Free ram : " + ramCounter.NextValue() + "MB");

      Console.ReadKey();
    }
  }
}

正如所引用问题中的其他答案所表明的那样,您可能需要调用cpuCounter.NextValue()两次才能获得正确的读数。

于 2013-05-02T07:33:44.823 回答