Bagikan melalui


PerformanceCounter.IncrementBy(Int64) Metode

Definisi

Kenaikan atau penurunan nilai penghitung kinerja terkait dengan jumlah tertentu melalui operasi atomik yang efisien.

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

Parameter

value
Int64

Nilai yang akan bertambah berdasar. (Nilai negatif mengurangi penghitung.)

Mengembalikan

Nilai penghitung baru.

Pengecualian

Penghitung bersifat baca-saja, sehingga aplikasi tidak dapat menaikkannya.

-atau-

Instans tidak dikaitkan dengan penghitung kinerja dengan benar.

-atau-

Properti InstanceLifetime diatur ke Process saat menggunakan memori bersama global.

Terjadi kesalahan saat mengakses API sistem.

Contoh

Contoh kode berikut menunjukkan cara menggunakan IncrementBy metode untuk menambahkan kenaikan ke penghitung. Contoh kode ini adalah bagian dari contoh yang lebih besar untuk PerformanceCounter kelas .

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

Keterangan

Anda hanya dapat menulis ke penghitung kustom. Semua penghitung sistem bersifat baca-saja.

Catatan

Metode Increment, IncrementBy, dan Decrement menggunakan interlock untuk memperbarui nilai penghitung. Ini membantu menjaga nilai penghitung tetap akurat dalam skenario multithreaded atau multiprocess, tetapi juga menghasilkan penalti performa. Jika Anda tidak memerlukan akurasi yang disediakan operasi yang saling mengunci, Anda dapat memperbarui RawValue properti secara langsung hingga 5 kali peningkatan performa. Namun, dalam skenario multithreaded, beberapa pembaruan pada nilai penghitung mungkin diabaikan, yang mengakibatkan data yang tidak akurat.

Catatan

Jika nilai untuk InstanceLifetime properti adalah Process dan kategori penghitung kinerja dibuat dengan .NET Framework versi 1.0 atau 1.1, akan InvalidOperationException dilemparkan. Kategori penghitung kinerja yang dibuat dengan versi sebelumnya menggunakan memori bersama global, dan nilai untuk InstanceLifetime harus Global. Jika kategori tidak digunakan oleh aplikasi yang berjalan pada versi 1.0 atau 1.1 dari .NET Framework, hapus dan buat ulang kategori.

Berlaku untuk

Keamanan Thread

Metode ini aman untuk utas.