/// <summary> /// Creates DefaultCategory from DefaultFactory /// </summary> private static void CreateDefaultCategory() { if (_defaultCategory == null) { lock (_syncObj) { if (_default == null) { _default = new InternalCounters.InternalCounterFactory(); } if (_defaultCategory == null) { _defaultCategory = _default.CreateSingleInstanceCategory("DefaultCategory", "Default category"); } } } }
/// <summary> /// Задать новое значение инстанса фабрики счётчиков /// </summary> /// <param name="factory">Фабрика счётчиков</param> public static void SetDefaultFactory(CounterFactory factory) { if (factory == null) { factory = new InternalCounters.InternalCounterFactory(); } CounterFactory oldVal = null; lock (_syncObj) { oldVal = System.Threading.Interlocked.Exchange(ref _default, factory); System.Threading.Interlocked.Exchange(ref _defaultCategory, null); } if (oldVal != null) { oldVal.Dispose(); } }