using System.Collections.Generic;
using Console = System.Console;
public static void Main()
var subject1 = new Subject<int>();
var subject2 = new Subject<int>();
var stream1 = subject1.SelectMany(x => CreateEnumerable(x));
var stream2 = subject2.SelectMany(x => CreateObservable(x));
stream1.Subscribe(x => Console.WriteLine("1: " + x));
stream2.Subscribe(x => Console.WriteLine("2: " + x));
Console.WriteLine("OnNext(3)");
Console.WriteLine("OnNext(2)");
private static IEnumerable<int> CreateEnumerable(int count)
return Enumerable.Range(0, count);
private static IObservable<int> CreateObservable(int count)
return Observable.Create<int>(observer =>
for (var i = 0; i < count; i++)