Как я могу запустить IObservable в определенное время? - PullRequest
1 голос
/ 28 сентября 2010

Если я использую Rx, как я могу создать IObservable, который будет запускать событие каждые 5 секунд, как я могу сделать наблюдаемое начало в определенную дату?Как я могу заставить его запускать свои события в круглую дату (каждую полночь?)

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Как я могу создать IObservable, который будет запускать событие каждые 5 секунд

Observable.Interval (TimeSpan.FromSeconds (5))

как я могу сделать заметное начало в определенную дату

Вы можете использовать Таймер для этого:

// 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 голос
/ 29 сентября 2010
// 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));
...