如何在特定时间启动Observable?

时间:2010-09-28 09:07:52

标签: c# system.reactive

假设我使用Rx,我如何创建一个IObservable,它将每5秒触发一次事件,如何在特定日期进行可观察的开始? 我怎样才能在圆形日期(每个午夜?)点燃它的事件。

2 个答案:

答案 0 :(得分:3)

  

如何创建一个每5秒触发一次事件的IObservable   秒

Observable.Interval(TimeSpan.FromSeconds(5))

  

如何在特定日期开始观察

您可以使用Timer:

// Fire at Jan 2014.
var jan2014 = new DateTimeOffset(2014, 1, 1, 0, 0, 0);
Observable.Timer(jan2014);
  

如何让它在圆形日期(每个午夜?)发射它?

定时器有一个过载,允许你在一定的时间内,然后每个设定的时间跨度发射它。看起来应该是这样的:

// Fire at Jan 2014 at midnight, then every 24 hours after that (e.g. every midnight):
var jan2014 = new DateTimeOffset(2014, 1, 1, 0, 0, 0);
Observable.Timer(jan2014, TimeSpan.FromHours(24));

答案 1 :(得分:1)

// Do you really care if it's up to five seconds later than midnight?
Observable.Interval(TimeSpan.FromSeconds(5))
          .Where(x => DateTime.Now > new DateTime(1,2,2010));