public static IObservable <long> PeriodicTimer(DateTimeOffset dueTime, TimeSpan period, IScheduler scheduler) { Invariant.ArgumentNotNull((object)scheduler, "scheduler"); TimeSpan p = ObservableTimers.Normalize(period); return(Observable.Create <long>((Func <IObserver <long>, IDisposable>)(observer => { long count = 0; return scheduler.Schedule(dueTime, (Action <Action <DateTimeOffset> >)(self => { IObserver <long> observer1 = observer; long num1 = count; count = num1 + 1L; long num2 = num1; observer1.OnNext(num2); self(scheduler.Now + p); })); }))); }