方法 : パフォーマンス カウンタのサンプルを取得する

更新 : 2007 年 11 月

CounterSample クラスを使用して、サンプルを作成し、その内容に対して計算を実行できます。サンプル クラスは、定義された条件に基づいてパフォーマンス カウンタの "サンプリング" を行います。条件には、1 つ以上のカウンタの値、値を取得する頻度などが含まれます。また、このクラスはサンプルが取得された時刻も記録します。このデータをすべて 1 つのインスタンス化されたクラスにまとめ、Calculate メソッドを使用して計算を実行できます。また、Calculate メソッドを使用して、2 つの異なるサンプルの値を比較する計算も実行できます。

実行される計算は、カウンタの型によって異なります。特定のカウンタ型には特定の計算方法が関連付けられています。たとえば、ElapsedTime 型のカウンタは、2 つの異なるサンプルのタイム スタンプを比較し、経過時間を求めます。多くのカウンタは、取得されたデータに基づいて平均を計算します。

サンプルは、次の手順で定義します。

  • CounterSample クラスの 1 つ以上のインスタンスを作成します。

  • 各インスタンスについて現在のサンプルを取得します。

  • 計算に使用する各サンプルをパラメータとして渡して、Calculate メソッドを呼び出します。

パフォーマンス カウンタのサンプルを取得して計算を実行するには

  1. PerformanceCounter インスタンスを作成し、目的のカテゴリおよびカウンタとやり取りするように設定します。詳細については、「方法 : PerformanceCounter コンポーネントのインスタンスを作成する」または「方法 : PerformanceCounter コンポーネントのインスタンスを設定する」を参照してください。

  2. サンプリングの結果を格納する CounterSample クラスのインスタンスを作成します。

  3. PerformanceCounter コンポーネントの NextSample メソッドを呼び出して、計算値を取得し、結果を CounterSample クラスに割り当てます。

    f77ezfb7.alert_note(ja-jp,VS.90).gifヒント :

    計算を実行するには、2 つのサンプルを取得する必要があります。

  4. 計算の結果を格納する変数を作成し、Single 型を割り当てます。

  5. 計算に必要な 2 つのサンプルのそれぞれに対して、NextSample の戻り値を CounterSample 型の変数に代入します。

  6. CounterSample クラスの Calculate メソッドを呼び出し、次のいずれかを行います。

    • サンプルを 2 つ取得した場合は、両方のサンプル (CounterSample オブジェクトとして格納されている) を Calculate メソッドにパラメータとして渡します。

    • サンプルを 1 つだけ取得した場合は、最初のサンプルを Calculate メソッドに渡し、2 番目のパラメータを使用してもう 1 つのサンプルを取得します。

  7. 計算の結果を、結果を格納するために作成した変数に代入します。

    f77ezfb7.alert_note(ja-jp,VS.90).gifメモ :

    2 つのサンプルは、同じ型のカウンタから取得する必要があります。カウンタの型が異なる場合、メソッドは例外をスローします。カウンタの型によって、実行される計算の種類が決まります。詳細については、「パフォーマンス カウンタの型」を参照してください。

    次のコードは、サンプルを 2 つ取得し、Calculate メソッドを使用してそれを比較する方法を示しています。

    ' Dim variables of types CounterSample for each sample and a 
    ' variable of type single for the results.
    Dim sample1 As CounterSample
    Dim sample2 As CounterSample
    Dim result As Single
    ' Retrieve a sample.
    sample1 = PerformanceCounter1.NextSample()
    ' Wait some interval of time here and retrieve
    ' a second sample.
    System.Threading.Thread.Sleep(1000)
    sample2 = PerformanceCounter1.NextSample()
    ' Pass both samples to the Calculate method.
    result = CounterSample.Calculate(sample1, sample2)
    
         System.Diagnostics.CounterSample sample1;
            System.Diagnostics.CounterSample sample2;
            float result;
            // Retrieve a sample.
            sample1 = PerformanceCounter1.NextSample();
            // Wait some interval of time here and retrieve
            // a second sample.
            System.Threading.Thread.Sleep(1000);
            sample2 = PerformanceCounter1.NextSample();
            // Pass both samples to the Calculate method.
            result = System.Diagnostics.CounterSample.Calculate(sample1, sample2);
    

    また、NextSample メソッドを呼び出して 2 番目のサンプルの値を取得することもできます。このアプローチの例を次に示します。

    Dim sample1 As CounterSample
    Dim result As Single
    ' Retrieve a single sample.
    sample1 = PerformanceCounter1.NextSample()
    ' Pass the retrieved sample to the calculate method
    ' and retrieve another sample in the second parameter.
    result = CounterSample.Calculate(sample1, PerformanceCounter1.NextSample())
    
         System.Diagnostics.CounterSample sample1;
            float result;
            // Retrieve a single sample.
            sample1 = PerformanceCounter1.NextSample();
            // Pass the retrieved sample to the calculate method
            // and retrieve another sample in the second parameter.
            result = System.Diagnostics.CounterSample.Calculate(sample1, PerformanceCounter1.NextSample());
    

参照

処理手順

方法 : パフォーマンス カウンタの生の値を取得する

方法 : パフォーマンス カウンタの計算値を取得する

方法 : カウンタおよびカテゴリのリストを取得する

概念

パフォーマンス カウンタの値の取得