PerformanceCounter.IncrementBy(Int64) PerformanceCounter.IncrementBy(Int64) PerformanceCounter.IncrementBy(Int64) PerformanceCounter.IncrementBy(Int64) Method

定義

有効な分割不可能な操作を通じて、関連付けられたパフォーマンス カウンターの値を指定した量ずつインクリメントまたはデクリメントします。Increments or decrements the value of the associated performance counter by a specified amount through an efficient atomic operation.

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 Int64 Int64 Int64

インクリメントする値の単位。The value to increment by. 負の値を指定すると、カウンターはデクリメントされます。(A negative value decrements the counter.)

戻り値

新しいカウンター値。The new counter value.

例外

カウンターは読み取り専用です。そのため、アプリケーションによるインクリメントができません。The counter is read-only, so the application cannot increment it.

または-or- インスタンスがパフォーマンス カウンターに正しく関連付けられていません。The instance is not correctly associated with a performance counter.

または-or- グローバル共有メモリを使用する場合、InstanceLifetime プロパティは Process に設定されます。The InstanceLifetime property is set to Process when using global shared memory.

システム API にアクセス中にエラーが発生しました。An error occurred when accessing a system API.

プラットフォームが Windows 98 または Windows Millennium Edition (Me) です。パフォーマンス カウンターはサポートされません。The platform is Windows 98 or Windows Millennium Edition (Me), which does not support performance counters.

次のコード例は、使用する方法を示します、IncrementByカウンターをインクリメントを追加するメソッド。The following code example demonstrates how to use the IncrementBy method to add increments to a counter. このコード例の例の一部、PerformanceCounterクラス。This code example is part of a larger example for the PerformanceCounter class.

void CollectSamples( ArrayList^ samplesList, PerformanceCounter^ PC, PerformanceCounter^ BPC )
{
   Random^ r = gcnew Random( DateTime::Now.Millisecond );

   // Loop for the samples.
   for ( int j = 0; j < 100; j++ )
   {
      int value = r->Next( 1, 10 );
      Console::Write( "{0} = {1}", j, value );
      PC->IncrementBy( value );
      BPC->Increment();
      if ( (j % 10) == 9 )
      {
         OutputSample( PC->NextSample() );
         samplesList->Add( PC->NextSample() );
      }
      else
            Console::WriteLine();
      System::Threading::Thread::Sleep( 50 );
   }
}
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 'CollectSamples

注釈

カスタム カウンターにのみ作成できます。You can write only to custom counters. すべてのシステム カウンターとは、読み取り専用です。All system counters are read-only.

注意

IncrementIncrementBy、およびDecrementメソッドでは、インタロックを使用して、カウンターの値を更新します。The Increment, IncrementBy, and Decrement methods use interlocks to update the counter value. これにより、マルチ スレッドまたはマルチ プロセスのシナリオも、パフォーマンスの低下の結果で、カウンターの値を正確に維持できます。This helps keep the counter value accurate in multithreaded or multiprocess scenarios, but also results in a performance penalty. インタロックされた精度を必要としない場合の操作を提供、更新することができます、 RawValue 5 までの直接プロパティ倍のパフォーマンスが向上します。If you do not need the accuracy that interlocked operations provide, you can update the RawValue property directly for up to a 5 times performance improvement. ただし、マルチ スレッド シナリオでは、カウンターの値を一部の更新プログラム可能性がありますは無視、データが不正確になります。However, in multithreaded scenarios, some updates to the counter value might be ignored, resulting in inaccurate data.

注意

場合の値、InstanceLifetimeプロパティはProcessと .NET framework version 1.0 または 1.1 では、パフォーマンス カウンター カテゴリが作成された、InvalidOperationExceptionがスローされます。If the value for the InstanceLifetime property is Process and the performance counter category was created with .NET Framework version 1.0 or 1.1, an InvalidOperationException is thrown. グローバル共有メモリ、およびの値を使用して、以前のバージョンで作成されたパフォーマンス カウンター カテゴリInstanceLifetimeありますGlobalします。Performance counter categories created with earlier versions use global shared memory, and the value for InstanceLifetime must be Global. 1.0 または 1.1、.NET Framework のバージョンで実行されるアプリケーション カテゴリを使用しない場合は、削除して、カテゴリを再作成します。If the category is not used by applications running on versions 1.0 or 1.1 of the .NET Framework, delete and recreate the category.

セキュリティ

PerformanceCounterPermission
場合、パフォーマンス カウンター カテゴリを記述するため、ReadOnlyプロパティはfalseします。for writing the performance counter category if the ReadOnly property is false. Write (関連する列挙体)Associated enumeration: Write.

適用対象