我有這樣的:我缺少關於無功分機定時器的信息?
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.
這是從this post代碼,讓我一個很好的點點開始沿着這條道路。我們的目標是每發佈一次Timer
,就會根據給定的開始時間和時間間隔來ping Web服務(通過CheckFolder()
方法)。
問題是,每次運行程序時,它都會爲第一個Watcher輸出一條消息,然後程序退出而沒有錯誤。它得到第一個答案,並且完成。
如何讓它等待來自所有計時器的其他出版物?
我幾乎是積極的我不是問這個問題的正確方法,但希望有一點反饋將幫助我改進我的問題。
謝謝。
一個方便的方法來記住這是做正確的事情,也捕獲訂閱,即'var subscription = Observable.Timer(...)。Subscribe(...);'現在你有一個代表訂閱的「IDisposable」,您現在必須考慮何時清理此資源。然後這應該強制你考慮爲什麼你的應用程序不會落在'static void Main'方法的底部。 –