Observable.Intervalは毎回値を生成します。アクションが次の繰り返しの前に終了するまで待つ方法Observable.Intervalはアクションが完了するまで待機します。
例:
Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(async t =>
{
//Here could be some long running action with different duration each iteration
Console.WriteLine(t.ToString());
await Task.Delay(3000);
});
それは、アクションを毎秒を開始します。アクションが完了するまで待つ方法
実際には、whileループや再帰的メソッドを使用しないでください。 –
似たようなことができます。しかし、タイムスパンを通過することなく、行動を求めているものを実装することができます。あなたがしていることは、その行動を得て、それをタスクにし、そのタスクが完了するとアクションを再び呼び出すことです。 この投稿を確認:http://stackoverflow.com/questions/13695499/proper-way-to-implement-a-never-ending-task-timers-vs-task –