次の方法で共有


PerformanceCounter.IncrementBy(Int64) メソッド

定義

効率的なアトミック操作によって、関連付けられているパフォーマンス カウンターの値を指定した量だけインクリメントまたはデクリメントします。

public:
 long IncrementBy(long value);
public long IncrementBy(long value);
member this.IncrementBy : int64 -> int64
Public Function IncrementBy (value As Long) As Long

パラメーター

value
Int64

インクリメントする値。 (負の値を指定すると、カウンターがデクリメントされます)。

戻り値

新しいカウンター値。

例外

カウンターは読み取り専用であるため、アプリケーションではインクリメントできません。

-又は-

インスタンスがパフォーマンス カウンターに正しく関連付けられていない。

-又は-

グローバル共有メモリを使用する場合、 InstanceLifetime プロパティは Process に設定されます。

システム API にアクセスするときにエラーが発生しました。

次のコード例では、 IncrementBy メソッドを使用してカウンターにインクリメントを追加する方法を示します。 このコード例は、 PerformanceCounter クラスの大きな例の一部です。

private static void CollectSamples(ArrayList samplesList)
{

    Random r = new Random( DateTime.Now.Millisecond );

    // Loop for the samples.
    for (int j = 0; j < 100; j++)
    {

        int value = r.Next(1, 10);
        Console.Write(j + " = " + value);

        avgCounter64Sample.IncrementBy(value);

        avgCounter64SampleBase.Increment();

        if ((j % 10) == 9)
        {
            OutputSample(avgCounter64Sample.NextSample());
            samplesList.Add( avgCounter64Sample.NextSample() );
        }
        else
        {
            Console.WriteLine();
        }

        System.Threading.Thread.Sleep(50);
    }
}
Private Shared Sub CollectSamples(ByVal samplesList As ArrayList)

    Dim r As New Random(DateTime.Now.Millisecond)

    ' Loop for the samples.
    Dim j As Integer
    For j = 0 To 99

        Dim value As Integer = r.Next(1, 10)
        Console.Write(j.ToString() + " = " + value.ToString())

        avgCounter64Sample.IncrementBy(value)

        avgCounter64SampleBase.Increment()

        If j Mod 10 = 9 Then
            OutputSample(avgCounter64Sample.NextSample())
            samplesList.Add(avgCounter64Sample.NextSample())
        Else
            Console.WriteLine()
        End If
        System.Threading.Thread.Sleep(50)
    Next j
End Sub

注釈

カスタム カウンターにのみ書き込むことができます。 すべてのシステム カウンターは読み取り専用です。

IncrementIncrementBy、およびDecrementメソッドは、インターロックを使用してカウンター値を更新します。 これにより、マルチスレッドまたはマルチプロセスのシナリオでカウンター値を正確に保つことができますが、パフォーマンスが低下します。 インターロックされた操作で提供される精度が不要な場合は、最大 5 倍のパフォーマンス向上のために、 RawValue プロパティを直接更新できます。 ただし、マルチスレッド シナリオでは、カウンター値の一部の更新が無視され、データが不正確になる可能性があります。

InstanceLifetime プロパティの値がProcessされ、パフォーマンス カウンター カテゴリが .NET Framework バージョン 1.0 または 1.1 で作成された場合、InvalidOperationExceptionがスローされます。 以前のバージョンで作成されたパフォーマンス カウンター カテゴリはグローバル共有メモリを使用し、 InstanceLifetime の値は Globalする必要があります。 .NET Framework のバージョン 1.0 または 1.1 で実行されているアプリケーションでカテゴリが使用されていない場合は、カテゴリを削除して再作成します。

適用対象

スレッド セーフ

このメソッドはスレッド セーフです。