-2

問題があります: 私のパフォーマンス プログラムは常に 0% の CPU 使用率を示します...

テキスト値 CPU というラベルを 1 つ追加しました。

コードは次のとおりです。

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);
            }
        }
    }
}

HTH

于 2012-08-22T10:36:02.563 に答える