public NeverEndingSynchronousCompletionAsyncResultObservable(SynchronousCompletionAsyncResult <T> task) { if (task.IsCompleted) { _value = task.GetResult(); } else { _asyncResult = task; } }
public IDisposable Subscribe(IObserver <T> observer) { if (_asyncResult?.IsCompleted == true) { _value = _asyncResult.Value.GetResult(); _asyncResult = null; } if (_asyncResult != null) { _asyncResult.Value.OnCompleted(() => { observer.OnNext(_asyncResult.Value.GetResult()); }); } else { observer.OnNext(_value); } return(Disposable.Empty); }