使用Rx框架立即启动任务,然后按时间间隔启动任务



我试图立即运行我的任务,然后按时间间隔运行它。我写了以下内容:

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

相关内容

  • 没有找到相关文章