예제 #1
0
        /// <summary>
        /// Конструктор ProfilingProviderWrapper
        /// </summary>
        /// <param name="wrappedProvider">Оборачиваемый профайлер</param>
        public ProfilingProviderWrapper(IProfilingProvider wrappedProvider)
        {
            if (wrappedProvider == null)
            {
                throw new ArgumentNullException("wrappedProvider");
            }

            _wrappedProvider = wrappedProvider;
        }
예제 #2
0
        /// <summary>
        /// Sets the profiling data handler
        /// </summary>
        /// <param name="profiler">Profiler that collects profiling events</param>
        public static void SetProfiler(IProfilingProvider profiler)
        {
            lock (_syncObject)
            {
                if (profiler == null)
                {
                    profiler = null;
                }
                else if (profiler.GetType() != typeof(ProfilingProviderWrapper) && !profiler.GetType().IsSubclassOf(typeof(ProfilingProviderWrapper)))
                {
                    profiler = new ProfilingProviderWrapper(profiler);
                }

                System.Threading.Interlocked.Exchange(ref _profiler, profiler);
                _isProfilingEnabled = !object.ReferenceEquals(profiler, null);
            }
        }