Sdílet prostřednictvím


PerformanceCounter.IncrementBy(Int64) Metoda

Definice

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.