PerformanceCounter.IncrementBy(Int64) Metodo
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Incrementa o decrementa di una quantità specificata il valore del contatore delle prestazioni associato mediante un'efficace operazione atomica.
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
Il valore di cui eseguire l'incremento (un valore negativo decrementa il contatore).
Il nuovo valore del contatore.
Il contatore è di sola lettura, quindi l'applicazione non può incrementarlo.
-oppure-
L'istanza non è associata correttamente a un contatore prestazioni.
-oppure-
La proprietà InstanceLifetime viene impostata su Process se si utilizza la memoria globale condivisa.
Si è verificato un errore durante l'accesso a un'API di sistema.
Nell'esempio di codice seguente viene illustrato come utilizzare il IncrementBy metodo per aggiungere incrementi a un contatore. Questo esempio di codice fa parte di un esempio più ampio per la PerformanceCounter classe .
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
È possibile scrivere solo in contatori personalizzati. Tutti i contatori di sistema sono di sola lettura.
Nota
I Incrementmetodi , IncrementBye Decrement usano interlock per aggiornare il valore del contatore. Ciò consente di mantenere accurato il valore del contatore negli scenari multithreading o multiprocesso, ma comporta anche una riduzione delle prestazioni. Se non è necessaria l'accuratezza specificata dalle operazioni interlocked, è possibile aggiornare direttamente la RawValue proprietà per un massimo di 5 volte il miglioramento delle prestazioni. Negli scenari multithreading, tuttavia, alcuni aggiornamenti al valore del contatore potrebbero essere ignorati, causando dati non accurati.
Nota
Se il valore della InstanceLifetime proprietà è Process e la categoria del contatore delle prestazioni è stata creata con .NET Framework versione 1.0 o 1.1, viene generata un'eccezione InvalidOperationException . Le categorie di contatori delle prestazioni create con le versioni precedenti usano la memoria condivisa globale e il valore per InstanceLifetime deve essere Global. Se la categoria non viene usata dalle applicazioni in esecuzione nelle versioni 1.0 o 1.1 di .NET Framework, eliminare e ricreare la categoria.
Questo metodo è thread-safe.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: