将性能计数器的值分配给 WPF 应用程序中的标签

本文关键字:应用程序 WPF 标签 分配 性能计数器 | 更新日期: 2023-09-27 18:36:52

我有一个 WPF 应用程序,我想从应用程序(报告自身的应用程序)中提供 CPU 使用情况详细信息。我有一个工作控制台应用程序,可以让我监视任何应用程序,我想知道是否可以使用相同的逻辑PerformanceCounter使用来自PerformanceCounter的信息更新LabelTextBox

CPU 使用率代码 - 控制台应用程序:

static void Main(string[] args)
    {
        Console.WriteLine("Please enter a Application to monitor");
        appName = Console.ReadLine();
        PerformanceCounter myAppCPU =
         new PerformanceCounter("Process", "% Processor Time", appName, true);
        Console.WriteLine("Press the any key to stop ... 'n");
        if (myAppCPU != null)
        {
            while (!Console.KeyAvailable)
            {
                double pct = myAppCPU.NextValue();
                Console.WriteLine("CPU % = " + pct);
                Thread.Sleep(2500);
            }
        }
        else
            Console.WriteLine("No Process found");
    }

将性能计数器的值分配给 WPF 应用程序中的标签

    //Create the Performance Counter for the current Process
    PerformanceCounter myAppCPU = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName, true);
    public MainWindow()
    {
        InitializeComponent();
        //Initialize a timer
        System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
        dispatcherTimer.Tick += DispatcherTimer_Tick;
        //Check the CPU every 3 seconds
        dispatcherTimer.Interval = new TimeSpan(0, 0, 3);
        //Start the Timer
        dispatcherTimer.Start();
    }
    //Every 3 seconds the timer ticks
    private void DispatcherTimer_Tick(object sender, EventArgs e)
    {
        //Write the result to the content of a label (CPULabel)
        CPULabel.Content = $"CPU % = {myAppCPU.NextValue()}";
    }

使用Process.GetCurrentProcess().ProcessName您可以获取进程名称您的应用程序。

创建一个每 x 秒滴答一次的计时器。在 Timer 事件中,读取下一个 CPU 值并将其直接写入标签(如我的示例)或绑定到视图的属性。