public IDisposable Subscribe(IObserver <GCInfo> observer) { lock (syncObject) { if (!triedToStartSource) { try { gcEventsSource.Start(); } catch (Exception ex) { sourceStartError = ex; } triedToStartSource = true; } } if (sourceStartError != null) { ThreadPool.QueueUserWorkItem( state => observer.OnError((Exception)state), sourceStartError); } return(observers.Subscribe(observer)); }
private (IObserver <int>, IDisposable) SetupObserver(IObserverCollection <int> collection) { var observer = Substitute.For <IObserver <int> >(); var handle = collection.Subscribe(observer); return(observer, handle); }