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

CombineLatestObserver<T>

sealed class CombineLatestObserver<T> : IObserver<T>
namespace System.Reactive.Linq.ObservableImpl { internal sealed class CombineLatestObserver<T> : IObserver<T> { private readonly object _gate; private readonly ICombineLatest _parent; private readonly int _index; private readonly IDisposable _self; private T _value; public T Value => _value; public CombineLatestObserver(object gate, ICombineLatest parent, int index, IDisposable self) { _gate = gate; _parent = parent; _index = index; _self = self; } public void OnNext(T value) { lock (_gate) { _value = value; _parent.Next(_index); } } public void OnError(Exception error) { _self.Dispose(); lock (_gate) { _parent.Fail(error); } } public void OnCompleted() { _self.Dispose(); lock (_gate) { _parent.Done(_index); } } } }