2

PerfMon カウンターからいくつかの値を取得する単純な監視アプリケーションがあります。ローカル マシンでテストする場合でも、新しいPerformanceCounterオブジェクトを作成するのに 30 秒以上かかります。

using System;
using System.Diagnostics;

namespace test_slow_perfmon
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch w = new Stopwatch();

            w.Start();
            PerformanceCounter c = new PerformanceCounter("PhysicalDisk", "Avg. Disk Read Queue Length", "_Total", "localhost");
            w.Stop();
            Console.WriteLine(string.Format("Creating a counter took {0}ms", w.Elapsed.TotalMilliseconds));
        }
    }
}

そこからの出力は、各カウンターを作成するのに 32 秒以上であることを示します。

カウンターの作成を高速化するにはどうすればよいですか?

4

1 に答える 1

3

30秒は、タイムアウトのように不審に聞こえます。これは、これが何らかのネットワークの問題である可能性があることを示しています。

ホスト名を指定しないコンストラクターを使用してperfmonカウンターを作成し、それが役立つかどうかを確認してください。

PerformanceCounter c = new PerformanceCounter("PhysicalDisk", "Avg. Disk Read Queue Length", "_Total");
于 2012-07-23T12:24:51.327 に答える