Exemple #1
0
        public static IObservable <T> AsObservable <T>(this INotifyDisposable disposable, Func <T> lastValue = null)
        {
            return(Observable.Create <T>(observer =>
            {
                if (disposable.IsDisposed)
                {
                    if (lastValue != null)
                    {
                        observer.OnNext(lastValue());
                    }
                    observer.OnCompleted();
                    return Disposables.Empty;
                }

                var handler = Disposables.Call(() =>
                {
                    if (lastValue != null)
                    {
                        observer.OnNext(lastValue());
                    }
                    observer.OnCompleted();
                });

                disposable.Attach(handler, keepAlive: true);

                return Disposables.Call(() =>
                {
                    disposable.Dettach(handler);
                });
            }));
        }
Exemple #2
0
 public void Dettach(IDisposable child) => _handler.Dettach(child);