using System.Reactive.Linq;
using System.Threading.Tasks;
public static void Main()
var testCommand = ReactiveCommand.CreateAsyncTask(async (name, ct) =>
for (int i = 0; i < 5; i++)
Console.WriteLine("{0} cancellation requested: {1}", name, ct.IsCancellationRequested);
if (ct.IsCancellationRequested)
ct.ThrowIfCancellationRequested();
.Timer(TimeSpan.FromSeconds(2));
.TakeUntil(whenButtonClick)
onNext: _ => Console.WriteLine("first next"),
onCompleted: () => Console.WriteLine("first completed"));
onNext: _ => Console.WriteLine("second next"),
onCompleted: () => Console.WriteLine("second completed"));