PerformanceCounter.IncrementBy(Int64) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Inkrementiert oder dekrementiert durch eine effiziente atomare Operation den Wert des zugeordneten Leistungsindikators um einen angegebenen Betrag.
public:
long IncrementBy(long value);
public long IncrementBy (long value);
member this.IncrementBy : int64 -> int64
Public Function IncrementBy (value As Long) As Long
Parameter
- value
- Int64
Der Wert, um den inkrementiert werden soll. (Durch einen negativen Wert wird der Zähler dekrementiert.)
Gibt zurück
Der neue Zählerwert.
Ausnahmen
Der Zähler ist schreibgeschützt, sodass er von der Anwendung nicht inkrementiert werden kann.
- oder -
Die Instanz ist keinem Leistungsindikator ordnungsgemäß zugeordnet.
- oder -
Die InstanceLifetime-Eigenschaft wird auf Process festgelegt, wenn der globale gemeinsam genutzte Speicherbereich verwendet wird.
Beim Zugreifen auf eine System-API ist ein Fehler aufgetreten.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie die IncrementBy -Methode verwenden, um einem Zähler Inkremente hinzuzufügen. Dieses Codebeispiel ist Teil eines größeren Beispiels für die PerformanceCounter -Klasse.
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
Hinweise
Sie können nur in benutzerdefinierte Leistungsindikatoren schreiben. Alle Systemindikatoren sind schreibgeschützt.
Hinweis
Die IncrementMethoden , IncrementBy, und Decrement verwenden Interlocks, um den Zählerwert zu aktualisieren. Dies trägt dazu bei, dass der Zählerwert in Multithread- oder Mehrverarbeitungsszenarien genau bleibt, aber auch zu Leistungseinbußen führt. Wenn Sie nicht die Genauigkeit benötigen, die interlocked-Vorgänge bieten, können Sie die Eigenschaft direkt aktualisieren, um eine RawValue bis zu fünffache Leistungsverbesserung zu erzielen. In Multithreadszenarien können jedoch einige Aktualisierungen des Zählerwerts ignoriert werden, was zu ungenauen Daten führt.
Hinweis
Wenn der Wert für die InstanceLifetime Eigenschaft ist Process und die Leistungsindikatorkategorie mit .NET Framework Version 1.0 oder 1.1 erstellt wurde, wird ein InvalidOperationException ausgelöst. Leistungsindikatorkategorien, die mit früheren Versionen erstellt wurden, verwenden globalen freigegebenen Arbeitsspeicher, und der Wert für muss sein InstanceLifetimeGlobal. Wenn die Kategorie nicht von Anwendungen verwendet wird, die unter Version 1.0 oder 1.1 der .NET Framework ausgeführt werden, löschen Sie die Kategorie, und erstellen Sie sie neu.
Gilt für:
Threadsicherheit
Diese Methode ist threadsicher.