public IDisposable Subscribe(TObserver observer) { lock (InternalObservers) InternalObservers?.Add(observer); return(Disposable.Create(() => InternalObservers?.Remove(observer))); }
private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { lock (InternalObservers) { InternalObservers.Clear(); InternalObservers = null; } } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }