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、インターロックを使用してカウンター値を更新します。 これにより、マルチスレッドまたはマルチプロセスのシナリオでカウンター値を正確に保つことができますが、パフォーマンスが低下します。 インターロックされた操作で提供される精度が必要ない場合は、プロパティを RawValue 直接更新して、最大 5 倍のパフォーマンス向上を実現できます。 ただし、マルチスレッドのシナリオでは、カウンター値の一部の更新が無視され、データが不正確になる可能性があります。
注意
プロパティの値InstanceLifetimeが でProcess、パフォーマンス カウンター カテゴリがバージョン 1.0 または 1.1 .NET Framework作成された場合は、 InvalidOperationException がスローされます。 以前のバージョンで作成されたパフォーマンス カウンター カテゴリではグローバル共有メモリが使用され、 の InstanceLifetime 値は である Global必要があります。 .NET Frameworkのバージョン 1.0 または 1.1 で実行されているアプリケーションでカテゴリが使用されていない場合は、カテゴリを削除して再作成します。
適用対象
スレッド セーフ
このメソッドはスレッド セーフです。
.NET