PerformanceCounter.IncrementBy(Int64) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.