Auf Englisch lesen

Freigeben über


PerformanceCounter.IncrementBy(Int64) Methode

Definition

Inkrementiert oder dekrementiert durch eine effiziente atomare Operation den Wert des zugeordneten Leistungsindikators um einen angegebenen Betrag.

C#
public long IncrementBy (long value);

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.

C#
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);
    }
}

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:

Produkt Versionen
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Threadsicherheit

Diese Methode ist threadsicher.