2009-09-11 7 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をご覧ください。 平均時間またはカウントの計算にはいくつかのタイプがあります。いくつかの例もあります。

これが役に立ちます。

関連する問題