예제 #1
0
 /// <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");
             }
         }
     }
 }
예제 #2
0
        /// <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();
            }
        }