public IDisposable Run() { sourceSubscription = new SingleAssignmentDisposable(); sourceSubscription.Disposable = parent.source.Subscribe(this); var scheduling = UnityObservable.IntervalFrame(parent.frameCount, parent.frameCountType) .Subscribe(new SampleFrameTick(this)); return(StableCompositeDisposable.Create(sourceSubscription, scheduling)); }
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); }
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)); }
IDisposable RunTimer(ulong timerId) { return(UnityObservable.TimerFrame(parent.frameCount, parent.frameCountType) .Subscribe(new TimeoutFrameTick(this, timerId))); }