Nyelv

PerformanceCounter.IncrementBy(Int64) Metódus

Definíció

A társított teljesítményszámláló értékét egy hatékony atomi művelettel egy meghatározott mennyiséggel növeli vagy decrementeli.

public:
 long IncrementBy(long value);
public long IncrementBy(long value);
member this.IncrementBy : int64 -> int64
Public Function IncrementBy (value As Long) As Long

Paraméterek

value
Int64

A növekményes érték. (A negatív érték a számlálót decress.)

Válaszok

Az új számláló értéke.

Kivételek

A számláló írásvédett, ezért az alkalmazás nem tudja növelni.

-vagy-

A példány nincs megfelelően társítva teljesítményszámlálóval.

-vagy-

A InstanceLifetime tulajdonság globális Process megosztott memória használata esetén van beállítva.

Hiba történt egy rendszer API elérésekor.

Példák

Az alábbi példakód bemutatja, hogyan adhat hozzá növekményeket a számlálóhoz a IncrementBy metódussal. Ez a példakód az osztály egy nagyobb példájának PerformanceCounter része.

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

Megjegyzések

Csak egyéni számlálókra írhat. Minden rendszerszámláló írásvédett.

Note

A Increment, IncrementByés Decrement metódusok összekapcsolásokkal frissítik a számláló értékét. Ez segít a számláló értékének pontosságában többszálú vagy többprocesszoros forgatókönyvekben, de teljesítménybeli büntetést is eredményez. Ha nincs szüksége az összekapcsolt műveletek által biztosított pontosságra, a tulajdonságot közvetlenül is frissítheti RawValue a teljesítmény ötszörösére. Többszálú forgatókönyvekben azonban a számláló értékének egyes frissítései figyelmen kívül hagyhatók, ami pontatlan adatokat eredményez.

Note

Ha a InstanceLifetime tulajdonság értéke Process, és a teljesítményszámláló kategória .NET Framework 1.0-s vagy 1.1-es verziójával lett létrehozva, a rendszer InvalidOperationException dob. A korábbi verziókban létrehozott teljesítményszámláló-kategóriák globális megosztott memóriát használnak, és a teljesítményszámlálók értékének InstanceLifetime meg kell lennie Global. Ha a kategóriát a .NET-keretrendszer 1.0-s vagy 1.1-s verzióján futó alkalmazások nem használják, törölje és hozza létre újra a kategóriát.

A következőre érvényes:

Szálbiztonság

Ez a módszer szálbiztos.