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); }