/// <inheritdoc/> public IDisposable RunIn(TimeSpan timespan, Action action) { var result = new DisposableTimer(_cancelTimers.Token); Observable.Timer(timespan, _reactiveScheduler) .Subscribe( _ => RunAction(action), () => _logger.LogTrace("Exiting scheduled run at {Timespan}", timespan) , result.Token); return(result); }
/// <inheritdoc/> public IDisposable RunEvery(TimeSpan timespan, Action action) { var result = new DisposableTimer(_cancelTimers.Token); Observable.Interval(timespan, _reactiveScheduler) .Subscribe( _ => RunAction(action), _ => _logger.LogTrace("Exiting timer using trigger with span {Span}", timespan) , result.Token); return(result); }
/// <inheritdoc/> public IDisposable RunAt(DateTimeOffset timeOffset, Action action) { var result = new DisposableTimer(_cancelTimers.Token); Observable.Timer( timeOffset, _reactiveScheduler) .Subscribe( _ => RunAction(action), () => _logger.LogTrace("Exiting timer that was scheduled at {TimeOffset}", timeOffset), result.Token ); return(result); }
/// <inheritdoc/> public IDisposable RunEvery(TimeSpan period, DateTimeOffset startTime, Action action) { var result = new DisposableTimer(_cancelTimers.Token); Observable.Timer( startTime, period, _reactiveScheduler) .Subscribe( _ => RunAction(action), () => _logger.LogTrace("Exiting timer that was scheduled at {StartTime} and every {Period}", startTime, period), result.Token ); return(result); }