我试图立即运行我的任务,然后按时间间隔运行它。我写了以下内容:
var syncMailObservable = Observable.Interval(TimeSpan.FromSeconds(15));
syncMailObservable.Subscribe(s => MyTask());
问题是任务在15秒后才启动。我需要在开始时运行我的任务,然后按时间间隔继续。
我该怎么做呢?
你可以这样做:
var syncMailObservable =
Observable
.Interval(TimeSpan.FromSeconds(15.0), Scheduler.TaskPool)
.StartWith(-1L);
syncMailObservable.Subscribe(s => MyTask());
试试这个:
Observable.Return(0).Concat(Observable.Interval(TimeSpan.FromSeconds(15)))
.Subscribe(_ => MyTask());
这个问题是专门针对Interval方法的,但是Timer方法可以干净利落地完成这个任务。
Timer方法支持初始延迟(到期时间)。将其设置为零的时间跨度应该立即启动任务,然后每隔一段时间运行一次。
var initialDelay = new TimeSpan(0);
var interval = TimeSpan.FromSeconds(15);
Observable.Timer(initialDelay, interval, Scheduler.TaskPool)
.Subscribe(_ => MyTask());
https://msdn.microsoft.com/en-us/library/hh229652 (v = vs.103) . aspx