コード例 #1
0
            public override void OnCompleted()
            {
                IScheduledObserver <T>[]? o = null;

                lock (_gate)
                {
                    CheckDisposed();

                    if (!_isStopped)
                    {
                        _isStopped = true;
                        Trim();

                        o = _observers.Data;
                        foreach (var observer in o)
                        {
                            observer.OnCompleted();
                        }

                        _observers = ImmutableList <IScheduledObserver <T> > .Empty;
                    }
                }

                if (o != null)
                {
                    foreach (var observer in o)
                    {
                        observer.EnsureActive();
                    }
                }
            }
コード例 #2
0
            public override void OnNext(T value)
            {
                IScheduledObserver <T>[]? o = null;

                lock (_gate)
                {
                    CheckDisposed();

                    if (!_isStopped)
                    {
                        Next(value);
                        Trim();

                        o = _observers.Data;
                        foreach (var observer in o)
                        {
                            observer.OnNext(value);
                        }
                    }
                }

                if (o != null)
                {
                    foreach (var observer in o)
                    {
                        observer.EnsureActive();
                    }
                }
            }
コード例 #3
0
 private void Unsubscribe(IScheduledObserver <T> observer)
 {
     lock (_gate)
     {
         if (!_isDisposed)
         {
             _observers = _observers.Remove(observer);
         }
     }
 }
コード例 #4
0
 public Subscription(ReplayBase subject, IScheduledObserver <T> observer)
 {
     _subject  = subject;
     _observer = observer;
 }