internal void Run(Action <EventEntry> action)
        {
            CompositeDisposable _listenersDisposable = new CompositeDisposable();

            if (EventSources != null)
            {
                foreach (INetworkingEventSourceProvider _eventSources in EventSources)
                {
                    ObservableEventListener _newEventListener = new ObservableEventListener();
                    _newEventListener.EnableEvents(_eventSources.GetPartEventSource(), EventLevel.LogAlways, Keywords.All);
                    _listenersDisposable.Add(_newEventListener);
                }
            }
            if (_listenersDisposable.Count == 0)
            {
                return;
            }
            IObservable <EventEntry> _last = _listenersDisposable.Cast <IObservable <EventEntry> >().Merge <EventEntry>();

            m_FileSubscription = _last.ObserveOn <EventEntry>(Scheduler.Default).Do <EventEntry>(action).LogToFlatFile(Properties.Settings.Default.LogFilePath);
        }