PerformanceCounter.IncrementBy(Int64) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.