public Subscription(IObserver <SubscriptionType> observer, EventFlowSubject <SubscriptionType> parentSubject) { Debug.Assert(observer != null); Debug.Assert(parentSubject != null); this.parentSubject = parentSubject; this.observer = observer; }
public void Dispose() { var current = Interlocked.Exchange <IObserver <SubscriptionType> >(ref this.observer, null); if (current != null) { this.parentSubject.Unsubscribe(current); this.parentSubject = null; } }