using System.Reactive.Linq;
using System.Reactive.Disposables;
public static void Main()
var observable = Observable
.Do(x => Console.WriteLine("Producer generated:" + x))
.Finally(() => Console.WriteLine("Producer finished"))
.Do(x => Console.WriteLine("Consumer received #" + x))
.Finally(() => Console.WriteLine("Consumer finished"));
observable.Subscribe().Dispose();
observable.Subscribe().Dispose();