0

以下のコードを参照してください。

    PerformanceCounter total_cpu = new PerformanceCounter("Process", "% Processor Time", "_Total");
    return total_cpu.NextValue();
    //returns 0

0を返します

さて、これを見てください:

    PerformanceCounter total_cpu = new PerformanceCounter("Process", "% Processor Time", "_Total");
    while (true)
    {
        float t = total_cpu.NextValue();
        System.Threading.Thread.Sleep(1000);
        return t;
        //returns correct value (matched with Task Manager)
    }

パフォーマンス カウンター値 (CPU 使用率など) を 2 秒ごとに WCF サービスを介して継続的に取得したいのですが、結果は ajax を使用して ASP ページに表示されます。

ここでの問題は、正しいメソッドがそれ自体にもループを作成することです。フラグで処理しようとしましたが、役に立ちませんでした。

注: WMIも試しましたが、正しい値が返されませんでした。

ありがとうございました

4

1 に答える 1

1

多くのカウンターでは、最初の値は常に 0 です。ドキュメントの備考セクションの最初の注を参照してください: http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.nextvalue.aspx

すべきことは、バックグラウンドで 2 秒ごとに読み取るカウンターの静的インスタンスを用意し、そのデータをサービスが取得できる場所に格納することです。リクエストのたびに、カウンターから毎回フェッチする代わりに、事前にフェッチされた値を返すことができます。

于 2013-07-20T22:15:59.873 に答える