PerformanceCounter.IncrementBy(Int64) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
효율적인 원자 단위 연산을 통해 관련 성능 카운터의 값을 지정한 양 만큼 증가 또는 감소시킵니다.
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 일부입니다.
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
설명
사용자 지정 카운터에만 쓸 수 있습니다. 모든 시스템 카운터는 읽기 전용입니다.
참고
, IncrementBy및 Decrement 메서드는 Increment인터록을 사용하여 카운터 값을 업데이트합니다. 이렇게 하면 다중 스레드 또는 다중 프로세서 시나리오에서 카운터 값을 정확하게 유지할 수 있지만 성능 저하도 발생합니다. 연동 작업이 제공하는 정확도가 필요하지 않은 경우 최대 5배 성능 향상을 위해 속성을 직접 업데이트 RawValue 할 수 있습니다. 그러나 다중 스레드 시나리오에서는 카운터 값에 대한 일부 업데이트가 무시되어 부정확한 데이터가 발생할 수 있습니다.
참고
속성 값이 InstanceLifetime 이 Process 고 .NET Framework 버전 1.0 또는 1.1을 사용하여 성능 카운터 범주를 만든 경우 가 InvalidOperationException throw됩니다. 이전 버전으로 만든 성능 카운터 범주는 전역 공유 메모리를 사용하며 의 값 InstanceLifetime 은 이어야 Global합니다. 버전 1.0 또는 1.1의.NET Framework에서 실행 중인 애플리케이션 범주를 사용 하지 않으면 삭제 하 고 범주를 다시 만듭니다.
적용 대상
스레드 보안
이 메서드는 스레드로부터 안전합니다.
.NET