PerformanceCounter.IncrementBy(Int64) Yöntem

Tanım

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.