open System;
open System.Timers;
open System.Threading.Tasks;
let t1 = new Timer(float 500);
let disposable =
t1.Elapsed
|> Observable.map(fun _ -> "t1")
|> Observable.subscribe(fun s -> printfn "%s" s)
t1.Start()
Task.Delay(10000).GetAwaiter().GetResult();
disposable.Dispose();