public void AttachPerformanceCountersCategoryInstance ( string performanceCountersCategoryName , string performanceCountersCategoryInstanceNamePrefix , MultiPerformanceCountersTypeFlags enablePerformanceCounters = MultiPerformanceCountersTypeFlags.ProcessNonTimeBasedCounters , PerformanceCounterInstanceLifetime performanceCounterInstanceLifetime = PerformanceCounterInstanceLifetime.Process ) { if (!_isAttachPerformanceCounters) { _isAttachPerformanceCounters = true; } else { CommonPerformanceCountersContainer container = null; EasyPerformanceCountersHelper <CommonPerformanceCountersContainer> .AttachPerformanceCountersCategoryInstance ( performanceCountersCategoryName , string.Format ( "{1}{0}{2}" , "-" , "Non-Pooled Objects" , performanceCountersCategoryInstanceNamePrefix ) , out container , PerformanceCounterInstanceLifetime.Process , initializePerformanceCounterInstanceRawValue : 1009 ); EasyPerformanceCountersHelper <CommonPerformanceCountersContainer> .AttachPerformanceCountersCategoryInstance ( performanceCountersCategoryName , string.Format ( "{1}{0}{2}" , "-" , "Pooled Objects" , performanceCountersCategoryInstanceNamePrefix ) , out container , PerformanceCounterInstanceLifetime.Process , initializePerformanceCounterInstanceRawValue : 1009 ); } }
public void AttachPerformanceCountersCategoryInstance ( string performanceCountersCategoryNamePrefix , string performanceCountersCategoryInstanceNamePrefix , Func <bool> onGetEnabledCountPerformanceProcessFunc = null , PerformanceCounterInstanceLifetime performanceCounterInstanceLifetime = PerformanceCounterInstanceLifetime.Process ) { var process = Process.GetCurrentProcess(); var processName = process.ProcessName; var instanceNamePrefix = string .Format ( "{0}-{1}" , processName , performanceCountersCategoryInstanceNamePrefix ); instanceNamePrefix = performanceCountersCategoryInstanceNamePrefix; var suffix = "-Queue"; _performanceCountersCategoryNameForQueueProcess = performanceCountersCategoryNamePrefix + suffix; _performanceCountersCategoryInstanceNameForQueueProcess = instanceNamePrefix + suffix; var qpcc = _queuePerformanceCountersContainer; qpcc .AttachPerformanceCountersToMembers ( _performanceCountersCategoryNameForQueueProcess , _performanceCountersCategoryInstanceNameForQueueProcess , performanceCounterInstanceLifetime ); qpcc .RegisterCountersUsage(); suffix = "-BatchProcess"; _performanceCountersCategoryNameForBatchProcess = performanceCountersCategoryNamePrefix + suffix; _performanceCountersCategoryInstanceNameForBatchProcess = instanceNamePrefix + suffix; CommonPerformanceCountersContainer container = null; EasyPerformanceCountersHelper <CommonPerformanceCountersContainer> .AttachPerformanceCountersCategoryInstance ( _performanceCountersCategoryNameForBatchProcess , _performanceCountersCategoryInstanceNameForBatchProcess , out container , performanceCounterInstanceLifetime ); if (_timerCounters == null) { _timerCounters = new WriteableTuple < bool , Stopwatch , PerformanceCounter , PerformanceCounter >[] { WriteableTuple .Create < bool , Stopwatch , PerformanceCounter , PerformanceCounter > ( false , null , _queuePerformanceCountersContainer .QueuedWaitAverageTimerPerformanceCounter , _queuePerformanceCountersContainer .QueuedWaitAverageBasePerformanceCounter ) , WriteableTuple .Create < bool , Stopwatch , PerformanceCounter , PerformanceCounter > ( true , null , _queuePerformanceCountersContainer .DequeueProcessedAverageTimerPerformanceCounter , _queuePerformanceCountersContainer .DequeueProcessedAverageBasePerformanceCounter ) }; } _isAttachedPerformanceCounters = true; OnGetEnabledCountPerformanceProcessFunc = onGetEnabledCountPerformanceProcessFunc; }