Я считаю, что проблема в том, что вы по сути не подключаете последовательность воспроизведения - или, возможно, делаете это слишком поздно.(Я не знаю деталей RefCount
, но я подозреваю, что он подключается только тогда, когда на него что-то подписывается.)
Вот альтернатива, которая работает:
var mergedSubject = Observable
.Merge(firstSubject, secondSubject, thirdSubject, forthSubject)
.Timeout(TimeSpan.FromSeconds(2), Observable.Return(Types.Error))
.Replay();
mergedSubject.Connect();
rootSubject.OnNext(Types.Second);
var result = mergedSubject.First();
Iне знаю, удовлетворяет ли это всем, что вам нужно, но, по крайней мере, выдает правильный результат для вашего тестового кода