2012-07-01 1 views
1

하나의 응용 프로그램 (.exe)에서 두 개의 AverageTimer32 성능 카운터를 정의하고 사용하려면 어떻게합니까?2 AverageTimer32 성능 카운터

추가 참고 사항 : 나는 작업의 다른 부분에서 소비 된 시간을 측정하려고합니다.

AverageTimer32 성능 카운터와 AverageBase가 있습니다. 그것은 작동합니다.

이제 AverageTimer32 성능 카운터를 두 개 추가하려고합니다. 다른 AverageBase 카운터를 추가하더라도 작동하지 않습니다. 나는 내가 뭔가에 대해 착각했다고 생각한다. 코드 샘플은 정말 감사드립니다.

이 코드의 다른 부분이다 :

_AverageDuration = new PerformanceCounter(); 
_AverageDuration.CategoryName = CategoryName; 
_AverageDuration.CounterName = "average time per operation"; 
_AverageDuration.MachineName = "."; 
_AverageDuration.ReadOnly = false; 

_AverageDurationBase = new PerformanceCounter(); 
_AverageDurationBase.CategoryName = CategoryName; 
_AverageDurationBase.CounterName = "average time per operation base"; 
_AverageDurationBase.MachineName = "."; 
_AverageDurationBase.ReadOnly = false; 
... 
CounterCreationDataCollection counters = new CounterCreationDataCollection(); 
... 
CounterCreationData avgDuration = new CounterCreationData(); 
avgDuration.CounterName = "average time per operation"; 
avgDuration.CounterHelp = "Average duration per operation execution"; 
avgDuration.CounterType = PerformanceCounterType.AverageTimer32; 
counters.Add(avgDuration); 

CounterCreationData avgDurationBase = new CounterCreationData(); 
avgDurationBase.CounterName = "average time per operation base"; 
avgDurationBase.CounterHelp = "Average duration per operation execution base"; 
avgDurationBase.CounterType = PerformanceCounterType.AverageBase; 
counters.Add(avgDurationBase); 
... 
PerformanceCounterCategory.Create(CategoryName, "Category for Receiver", PerformanceCounterCategoryType.Unknown, counters); 
... 
AverageDuration.IncrementBy(performanceCounterwatch.ElapsedTicks); 
AverageDurationBase.Increment(); 
+0

BTW, [성능 카운터 코드를 생성하는 데 XSLT 사용] (http://rusanu.com/2009/04/11/using-xslt-to-generate-performance-counters-code/)과 같은 것을 고려해보십시오. 모든 코드를 반복하지 마십시오 –

답변

3

을 추가하는 순서가 중요합니다. 평균을, 그 다음에 해당 기준을, 그 다음에 두 번째 평균과 두 번째 해당 기준을 추가해야합니다.

+0

또한 카테고리를 제거하고 새로운 성능 카운터로 다시 추가해야한다고 생각합니다. –