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.
ObserveOn(Scheduler.Immediate)
causes an infinite loop.ObserveOn
hasLinkedListNode<SchedulableAction>
, and pushSchedulableAction
to it. ButProcessNext()
take only first value. Therefore, the sameSchedulableAction
is executed many times, and never stop.