/// <summary> /// Конструктор ProfilingProviderWrapper /// </summary> /// <param name="wrappedProvider">Оборачиваемый профайлер</param> public ProfilingProviderWrapper(IProfilingProvider wrappedProvider) { if (wrappedProvider == null) { throw new ArgumentNullException("wrappedProvider"); } _wrappedProvider = wrappedProvider; }
/// <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); } }