protected override IDisposable SubscribeCore(IObserver <T> observer, IDisposable cancel) { var d = new MultipleAssignmentDisposable(); d.Disposable = UnityObservable.TimerFrame(frameCount, frameCountType) .SubscribeWithState3(observer, d, source, (_, o, disp, s) => { disp.Disposable = s.Subscribe(o); }); return(d); }
protected override IDisposable SubscribeCore(IObserver <T> observer, IDisposable cancel) { var d = new MultipleAssignmentDisposable(); d.Disposable = UnityObservable.TimerFrame(frameCount, frameCountType) .Subscribe(_ => { d.Disposable = source.Subscribe(observer); }); return(d); }
public override void OnNext(T value) { ulong currentid; lock (gate) { hasValue = true; latestValue = value; id = unchecked (id + 1); currentid = id; } var d = new SingleAssignmentDisposable(); cancelable.Disposable = d; d.Disposable = UnityObservable.TimerFrame(parent.frameCount, parent.frameCountType) .Subscribe(new ThrottleFrameTick(this, currentid)); }
public override void OnNext(T value) { lock (gate) { if (!open) { return; } observer.OnNext(value); open = false; } var d = new SingleAssignmentDisposable(); cancelable.Disposable = d; d.Disposable = UnityObservable.TimerFrame(parent.frameCount, parent.frameCountType) .Subscribe(tick); }
IDisposable RunTimer(ulong timerId) { return(UnityObservable.TimerFrame(parent.frameCount, parent.frameCountType) .Subscribe(new TimeoutFrameTick(this, timerId))); }