using System.Reactive.Concurrency;
using System.Reactive.Linq;
using System.Reactive.Subjects;
namespace ConsoleApplication6
static void Main(string[] args)
var aObserver = new Subject<Tuple<char, long>>();
var bObserver = new Subject<Tuple<char, long>>();
aObserver.ObserveOn(NewThreadScheduler.Default)
bObserver.ObserveOn(NewThreadScheduler.Default)
var aSource = Observable.Interval(TimeSpan.FromMilliseconds(10))
.Select(i => new Tuple<char,long>( 'a', i))
var bSource = Observable.Interval(TimeSpan.FromMilliseconds(10))
.Select(i => new Tuple<char, long>('b', i))
.Subscribe(i => i.Subscribe(j =>