PerformanceCounter.IncrementBy(Int64) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Verimli bir atomik işlem aracılığıyla ilişkili performans sayacının değerini belirtilen miktarda artırır veya düşürür.
public:
long IncrementBy(long value);
public long IncrementBy (long value);
member this.IncrementBy : int64 -> int64
Public Function IncrementBy (value As Long) As Long
Parametreler
- value
- Int64
Artıracak değer. (Negatif bir değer sayacın azalmasını sağlar.)
Döndürülenler
Yeni sayaç değeri.
Özel durumlar
Sayaç salt okunur olduğundan uygulama bunu artıramaz.
-veya-
Örnek bir performans sayacıyla doğru ilişkilendirilmemiş.
-veya-
InstanceLifetime Genel paylaşılan bellek kullanılırken özelliği olarak Process ayarlanır.
Sistem API'lerine erişilirken bir hata oluştu.
Örnekler
Aşağıdaki kod örneği, sayacına IncrementBy artımlar eklemek için yönteminin nasıl kullanılacağını gösterir. Bu kod örneği, sınıfı için PerformanceCounter daha büyük bir örneğin parçasıdır.
void CollectSamples( ArrayList^ samplesList, PerformanceCounter^ PC, PerformanceCounter^ BPC )
{
Random^ r = gcnew Random( DateTime::Now.Millisecond );
// Loop for the samples.
for ( int j = 0; j < 100; j++ )
{
int value = r->Next( 1, 10 );
Console::Write( "{0} = {1}", j, value );
PC->IncrementBy( value );
BPC->Increment();
if ( (j % 10) == 9 )
{
OutputSample( PC->NextSample() );
samplesList->Add( PC->NextSample() );
}
else
Console::WriteLine();
System::Threading::Thread::Sleep( 50 );
}
}
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
Açıklamalar
Yalnızca özel sayaçlara yazabilirsiniz. Tüm sistem sayaçları salt okunur.
Not
Increment, IncrementByve Decrement yöntemleri, sayaç değerini güncelleştirmek için kilitleri kullanır. Bu, çok iş parçacıklı veya çok işlemli senaryolarda sayaç değerinin doğru tutulmasına yardımcı olur, ancak aynı zamanda bir performans cezasına neden olur. Birbirine kenetlenmiş işlemlerin sağladığı doğruluğa ihtiyacınız yoksa, özelliği doğrudan 5 kata kadar performans geliştirmesi için güncelleştirebilirsiniz RawValue . Ancak, çok iş parçacıklı senaryolarda, sayaç değerinde yapılan bazı güncelleştirmeler yoksayılabilir ve bu da yanlış verilere neden olabilir.
Not
Özelliğin InstanceLifetime değeri ise Process ve performans sayacı kategorisi .NET Framework sürüm 1.0 veya 1.1 ile oluşturulduysa, bir InvalidOperationException oluşturulur. Önceki sürümlerle oluşturulan performans sayacı kategorileri genel paylaşılan bellek kullanır ve değerinin InstanceLifetime olması Globalgerekir. Kategori, .NET Framework 1.0 veya 1.1 sürümlerinde çalışan uygulamalar tarafından kullanılmıyorsa, kategoriyi silin ve yeniden oluşturun.
Şunlara uygulanır
İş Parçacığı Güvenliği
Bu yöntem iş parçacığı güvenlidir.