O que estou perdendo com temporizadores de extensão reativa?

Eu tenho isto:

watchers
  .ToObservable() // needs to be observable
  .SelectMany(watcher =>         // working on each watcher
    Observable
      // create a timer for the watcher
      .Timer(watcher.StartTime, TimeSpan.FromHours(watcher.Interval))  
      .SelectMany(Observable.FromAsync(
        async () => new { watcher, result = await CheckFolder(watcher.Path) }))) 
  .Subscribe(x => Console.WriteLine(string.Format("Watcher: {0}\tResult: {1}\tTime: {2}", x.watcher.Name, x.result, DateTimeOffset.Now))); // tell everyone what happened.

Que é um bom pedaço de código deesta postagem Isso me fez começar essa estrada. O objetivo é fazer ping em um serviço da Web (viaCheckFolder() método) toda vez que oTimers publicar, com base em um determinado horário de início e intervalo.

O problema é que, toda vez que eu executo o programa, ele gera uma única mensagem para o primeiro Inspetor e, em seguida, o programa sai sem erro. Obtém a primeira resposta e está terminado.

Como fazê-lo esperar pelas outras publicações de todos os timers?

Estou quase certo de que não estou fazendo essa pergunta da maneira certa, mas espero que um pequeno feedback me ajude a refinar minha pergunta.

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion