2009-09-11 2 views

ответ

35

Вот пример кода, который я когда-то написал, чтобы сделать именно это.

Во-первых, вам необходимо указать и установить соответствующие счетчики производительности. Вы можете сделать это с помощью установщика:

public class CreditPerformanceMonitorInstaller : Installer 
{ 
    private PerformanceCounterInstaller counterInstaller_; 

    public CreditPerformanceMonitorInstaller() 
    { 
     this.counterInstaller_ = new PerformanceCounterInstaller(); 
     this.counterInstaller_.CategoryName = CreditPerformanceCounter.CategoryName; 
     this.counterInstaller_.CategoryType = PerformanceCounterCategoryType.SingleInstance; 

     CounterCreationData transferAverageData = new CounterCreationData(); 
     transferAverageData.CounterName = CreditPerformanceCounter.AverageTransferTimeCounterName; 
     transferAverageData.CounterHelp = "Reports the average execution time of transfer operations"; 
     transferAverageData.CounterType = PerformanceCounterType.AverageTimer32; 
     this.counterInstaller_.Counters.Add(transferAverageData); 

     CounterCreationData transferAverageBaseData = new CounterCreationData(); 
     transferAverageBaseData.CounterName = CreditPerformanceCounter.AverageTransferTimeBaseCounterName; 
     transferAverageBaseData.CounterHelp = "Base for average transfer time counter"; 
     transferAverageBaseData.CounterType = PerformanceCounterType.AverageBase; 
     this.counterInstaller_.Counters.Add(transferAverageBaseData); 

     this.Installers.Add(this.counterInstaller_); 
    } 

    public Installer PerformanceCounterInstaller 
    { 
     get { return this.counterInstaller_; } 
    } 
} 

Для записи в счетчик производительности, вы можете сделать это следующим образом:

public void RecordTransfer(long elapsedTicks) 
{ 
    using (PerformanceCounter averageTransferTimeCounter = new PerformanceCounter(), 
     averageTransferTimeBaseCounter = new PerformanceCounter()) 
    { 
     averageTransferTimeCounter.CategoryName = CreditPerformanceCounter.CategoryName; 
     averageTransferTimeCounter.CounterName = CreditPerformanceCounter.AverageTransferTimeCounterName; 
     averageTransferTimeCounter.ReadOnly = false; 

     averageTransferTimeBaseCounter.CategoryName = CreditPerformanceCounter.CategoryName; 
     averageTransferTimeBaseCounter.CounterName = CreditPerformanceCounter.AverageTransferTimeBaseCounterName; 
     averageTransferTimeBaseCounter.ReadOnly = false; 

     averageTransferTimeCounter.IncrementBy(elapsedTicks); 
     averageTransferTimeBaseCounter.Increment(); 
    } 
} 
4

Взгляните на разные PerformanceCounterTypes. Существует несколько типов для вычисления среднего времени или количества. Вы также найдете несколько примеров.

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^