2009-03-05 20 views
0

System.Diagnostic için C# PerformanceCounter Kitaplığı bölümüne çalışıyorum. Sayacın ham değeriniC# performanceCounter ayarı sayaç değeri

kamuda uzun süre tutarak RawValue {set; almak;

Rawalue'u 0'a geçiriyordum. Ancak sayacın Maksimum değerinin çok büyük bir sayıya ayarlandığını fark ettim. Tezgahın Önceki değeri burada gerçekten bir hata yapıyoruz sanmıyorum kodum

using (PerformanceCounter ctr = new  
PerformanceCounter(Settings.Instance.SetSourceAppliacationName, counter.ToString(), false)) 
{ 
    if (incrementCounter) 
    { 
     ctr.IncrementBy(value); 
    } 
    else 
    { 
     ctr.RawValue = value; 
    } 
} 

cevap

1

olduğunu, birisi bana yardım ve ben yapım olabilecek hata işaret edebilir

2 idi.

Maksimum değer, PerformanceCounter'ın kendisinin bir özelliği değildir; izleme aracının (PerfMon gibi) bir parçasıdır. PerformanceCounter sınıfını kullanarak ayarlayamazsınız.

Yapmak isteyeceğiniz bir şey, uygulamanızın içine yararlı veriler uygulamaya başlamaya başlamadan önce RawValue değerini sıfırlamaktır. PerformanceCounterCategoryType.MultiInstance için tek bir örnek kategorisi (PerformanceCounterCategoryType.SingleInstance) veya aynı örnek adı ("toplam" örneği adı gibi) kullanarak birden çok uygulamaya sahipseniz bu zor olabilir.

Çok yüksek sayı, performans sayacı değişkenini depolamak için kullanılmamış, önceden başlatılmamış bir bellek bloğundan gelen rasgele bir sayıdır. Birden çok uygulama, devam etmekte olan bir performans sayacına yeni bir PerformanceCounter nesnesini örnekleyerek erişmeye çalışabileceğinden, bu örnekleme işlemi, tasarım tarafından değeri otomatik olarak sıfıra ayarlamaz.

+0

PerfMon geliştirme ekibinin, birincil kullanıcı ilgisi değişkenini sıfırlamak için gerekli olduğunu hissetmezseniz şaşırırdım. –