UniRx
UniRx copied to clipboard
Fix infinite recursive in ObserveOn
ObserveOn(Scheduler.Immediate)
causes an infinite loop.
// Sample
var subject = new Subject<int>();
var observable = subject.ObserveOn(Scheduler.Immediate);
observable
.Where(x => x == 0)
.Subscribe(_ => subject.OnNext(1));
subject.OnNext(0); // !
subject.OnCompleted();
ObserveOn
has LinkedListNode<SchedulableAction>
, and push SchedulableAction
to it.
But ProcessNext()
take only first value.
Therefore, the same SchedulableAction
is executed many times, and never stop.