internal void AddListener(ActivityListener listener) { if (_listeners == null) { Interlocked.CompareExchange(ref _listeners, new SynchronizedList <ActivityListener>(), null); } _listeners.AddIfNotExist(listener); }
/// <summary> /// Add a listener to the <see cref="Activity"/> starting and stopping events. /// </summary> /// <param name="listener"> The <see cref="ActivityListener"/> object to use for listeneing to the <see cref="Activity"/> events.</param> public static void AddActivityListener(ActivityListener listener) { if (listener == null) { throw new ArgumentNullException(nameof(listener)); } if (s_allListeners.AddIfNotExist(listener)) { s_activeSources.EnumWithAction(source => { var shouldListenTo = listener.ShouldListenTo; if (shouldListenTo != null && shouldListenTo(source)) { source.AddListener(listener); } }); } }