<PackageReference Include="System.Reactive" Version="4.1.6" />

FirstBlocking<T>

sealed class FirstBlocking<T> : BaseBlocking<T>
using System.Reactive.Disposables; namespace System.Reactive.Linq.ObservableImpl { internal sealed class FirstBlocking<T> : BaseBlocking<T> { public override void OnCompleted() { Unblock(); if (!Disposable.GetIsDisposed(ref _upstream)) Disposable.TryDispose(ref _upstream); } public override void OnError(Exception error) { base.OnError(error); if (!Disposable.GetIsDisposed(ref _upstream)) Disposable.TryDispose(ref _upstream); } public override void OnNext(T value) { if (!_hasValue) { _value = value; _hasValue = true; Disposable.TryDispose(ref _upstream); Unblock(); } } } }