PerformanceCounter.IncrementBy(Int64) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zvýší nebo sníží hodnotu přidruženého čítače výkonu o zadanou částku prostřednictvím efektivní atomické operace.
public:
long IncrementBy(long value);
public long IncrementBy(long value);
member this.IncrementBy : int64 -> int64
Public Function IncrementBy (value As Long) As Long
Parametry
- value
- Int64
Hodnota, o kterou se má zvýšit. (Záporná hodnota dekrementuje čítač.)
Návraty
Nová hodnota čítače.
Výjimky
Čítač je jen pro čtení, takže ji aplikace nemůže zvýšit.
nebo
Instance není správně přidružena k čítači výkonu.
nebo
Vlastnost je nastavena InstanceLifetimeProcess při použití globální sdílené paměti.
Při přístupu k systémovému rozhraní API došlo k chybě.
Příklady
Následující příklad kódu ukazuje, jak použít metodu IncrementBy k přidání přírůstků do čítače. Tento příklad kódu je součástí většího příkladu PerformanceCounter pro třídu.
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
Poznámky
Můžete psát jenom na vlastní čítače. Všechny systémové čítače jsou jen pro čtení.
Poznámka:
Funkce Increment, IncrementBya Decrement metody používají vzájemné zámky k aktualizaci hodnoty čítače. To pomáhá udržovat hodnotu čítače přesnou ve scénářích s více vlákny nebo víceprocesy, ale také výsledkem je snížení výkonu. Pokud nepotřebujete přesnost, kterou poskytují vzájemně uzamčené operace, můžete vlastnost aktualizovat RawValue přímo o 5krát vyšší výkon. Ve scénářích s více vlákny ale můžou být některé aktualizace hodnoty čítače ignorovány, což vede k nepřesným datům.
Poznámka:
Pokud je Process hodnota vlastnosti InstanceLifetime a kategorie čítače výkonu byla vytvořena s rozhraním .NET Framework verze 1.0 nebo 1.1, InvalidOperationException vyvolá se vyvolá. Kategorie čítače výkonu vytvořené se staršími verzemi používají globální sdílenou paměť a hodnota musí InstanceLifetime být Global. Pokud kategorie nepoužívá aplikace spuštěné ve verzích 1.0 nebo 1.1 rozhraní .NET Framework, odstraňte kategorii a znovu ji vytvořte.
Platí pro
Bezpečný přístup z více vláken
Tato metoda je bezpečná pro přístup z více vláken.