2009-09-11 15 views

Répondre

35

Voici un exemple de code que j'ai déjà écrit pour faire exactement cela.

D'abord, vous devez spécifier et installer les compteurs de performance en question. Vous pouvez le faire en utilisant un installateur:

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_; } 
    } 
} 

Pour écrire au compteur de performance, vous pouvez le faire comme ceci:

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

Regardez les différents PerformanceCounterTypes. Il existe plusieurs types de calcul du temps moyen ou du comptage. Vous trouverez également quelques exemples.

Espérons que cela aide.

Questions connexes