2010-09-28 2 views
1

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

ответ

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)); 
3

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

Observable. Интервал (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)); 
Смежные вопросы