我正在尝试立即运行我的任务,然后按时间间隔运行它。 我写了以下内容:
var syncMailObservable = Observable.Interval(TimeSpan.FromSeconds(15));
syncMailObservable.Subscribe(s => MyTask());
问题是任务在15秒后才开始。我需要在开始时运行我的任务,然后按时间间隔继续。
我该怎么做?
答案 0 :(得分:14)
你可以这样做:
var syncMailObservable =
Observable
.Interval(TimeSpan.FromSeconds(15.0), Scheduler.TaskPool)
.StartWith(-1L);
syncMailObservable.Subscribe(s => MyTask());
答案 1 :(得分:3)
试试这个:
Observable.Return(0).Concat(Observable.Interval(TimeSpan.FromSeconds(15)))
.Subscribe(_ => MyTask());
答案 2 :(得分:2)
这个问题很老,具体是指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