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();