-2

我有一个问题:我的性能程序总是显示 0% CPU 使用率...

我添加了 1 个名为 Text value CPU 的标签:

这是代码:

public partial class Form1 : Form
{
    PerformanceCounter cpu = new PerformanceCounter ("Processor", "% Processor Time", "_Total");

    public Form1()
    {
        InitializeComponent();
        //string cpu_ussage =
        Text.Text = "CPU: " + CPU_TIME();
    }
    // Provjera Procesa koristeći %
    public string CPU_TIME()
    {
        float cpu_time;

        cpu_time = cpu.NextValue();
        return Math.Round(Convert.ToDouble(cpu_time.ToString()), 2) + "%";

    }
    private void timer1_tick(object sender, EventArgs e)
    {
      Text.Text = "CPU Time:" + CPU_TIME();
    }
}
4

2 回答 2

0

你可以只替换

return cpu.NextValue();
于 2012-08-22T10:24:21.080 回答
0

可能是因为在程序已经运行并完成之后正在读取 CPU %,而这个计数器实际上是 0。我试过你的例子,它确实打印了 0。但是当你尝试下面的循环时,你会看到值.

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



namespace Stackoverflow
{
    public class PerfCounters
    {
        public static void Main()
        {
            var processorCategory = PerformanceCounterCategory.GetCategories()
                .FirstOrDefault(cat => cat.CategoryName == "Processor");
            var countersInCategory = processorCategory.GetCounters("_Total");
            DisplayCounter(countersInCategory
                .First(cnt => cnt.CounterName == "% Processor Time"));
            Console.Read();
        }
        private static void DisplayCounter(PerformanceCounter performanceCounter)
        {
            while (!Console.KeyAvailable)
            {
                Console.WriteLine("{0}\t{1} = {2}",
                    performanceCounter.CategoryName
                    , performanceCounter.CounterName
                    , performanceCounter.NextValue());
                Thread.Sleep(1000);
            }
        }
    }
}

高温高压

于 2012-08-22T10:36:02.563 回答