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.

예제

다음 코드 예제를 사용 하는 방법에 설명 합니다 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

설명

사용자 지정 카운터에만 작성할 수 있습니다.You can write only to custom counters. 모든 시스템 카운터는 읽기 전용입니다.All system counters are read-only.

참고

합니다 Increment, IncrementBy, 및 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 버전 1.0 또는 1.1을 사용 하 여 생성 된는 InvalidOperationException throw 됩니다.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. 연관된 열거형: WriteAssociated enumeration: Write.

적용 대상