public static void AttachPerformanceCountersCategoryInstance( string performanceCountersCategoryName , string performanceCountersCategoryInstanceName ) { string key = string.Format ( "{1}{0}{2}" , "-" , performanceCountersCategoryName , performanceCountersCategoryInstanceName ); PerformanceCountersContainer container = null; if (!_dictionary.TryGetValue(key, out container)) { container = new PerformanceCountersContainer(); _dictionary.Add ( key , container //new PerformanceCountersContainer() ); container.AttachPerformanceCountersToProperties(performanceCountersCategoryInstanceName, performanceCountersCategoryName); } }
public static void CountPerformance( MultiPerformanceCountersTypeFlags enabledPerformanceCounters , string performanceCountersCategoryName , string performanceCountersCategoryInstanceName , Action beforeCountPerformanceInnerProcessAction , Action countPerformanceInnerProcessAction , Action afterCountPerformanceInnerProcessAction ) { if (enabledPerformanceCounters != MultiPerformanceCountersTypeFlags.None) { if (countPerformanceInnerProcessAction != null) { string key = string.Format ( "{1}{0}{2}" , "-" , performanceCountersCategoryName , performanceCountersCategoryInstanceName ); PerformanceCountersContainer container = null; if (!_dictionary.TryGetValue(key, out container)) { lock (_lockerObject) { container = new PerformanceCountersContainer(); _dictionary.Add ( key , new PerformanceCountersContainer() ); container.AttachPerformanceCountersToProperties ( performanceCountersCategoryInstanceName , performanceCountersCategoryName ); } } var enableProcessCounter = ( (enabledPerformanceCounters & MultiPerformanceCountersTypeFlags.ProcessCounter) != MultiPerformanceCountersTypeFlags.None ); if (enableProcessCounter) { container.PrcocessPerformanceCounter.Increment(); } var enableProcessingCounter = ( (enabledPerformanceCounters & MultiPerformanceCountersTypeFlags.ProcessingCounter) != MultiPerformanceCountersTypeFlags.None ); if (enableProcessingCounter) { container.ProcessingPerformanceCounter.Increment(); } var enableProcessedAverageTimerCounter = ( (enabledPerformanceCounters & MultiPerformanceCountersTypeFlags.ProcessedAverageTimerCounter) != MultiPerformanceCountersTypeFlags.None ); container.ProcessedAverageTimerPerformanceCounter.ChangeAverageTimerCounterValueWithTryCatchExceptionFinally ( enableProcessedAverageTimerCounter , container.ProcessedAverageBasePerformanceCounter , () => { if (countPerformanceInnerProcessAction != null) { if (beforeCountPerformanceInnerProcessAction != null) { beforeCountPerformanceInnerProcessAction(); } countPerformanceInnerProcessAction(); if (afterCountPerformanceInnerProcessAction != null) { afterCountPerformanceInnerProcessAction(); } } } , null , null ); if (enableProcessingCounter) { container.ProcessingPerformanceCounter.Decrement(); } var enableProcessedPerformanceCounter = ( (enabledPerformanceCounters & MultiPerformanceCountersTypeFlags.ProcessedCounter) != MultiPerformanceCountersTypeFlags.None ); if (enableProcessedPerformanceCounter) { container.ProcessedPerformanceCounter.Increment(); } var enableProcessedRateOfCountsPerSecondPerformanceCounter = ( (enabledPerformanceCounters & MultiPerformanceCountersTypeFlags.ProcessedRateOfCountsPerSecondCounter) != MultiPerformanceCountersTypeFlags.None ); if (enableProcessedRateOfCountsPerSecondPerformanceCounter) { container.ProcessedRateOfCountsPerSecondPerformanceCounter.Increment(); } } } else { if (countPerformanceInnerProcessAction != null) { countPerformanceInnerProcessAction(); } } }
public IEnumerable <PerformanceCounter> GetPerformanceCountersByLevel(int level) { return (PerformanceCountersContainer .GetPerformanceCountersByLevel(level)); }