public Task StartAsync(CancellationToken cancellationToken) { StartOrRestartTimer(); _optionsChangeListener = _optionsMonitor.OnChange(options => { _options = options; StartOrRestartTimer(); }); return(Task.CompletedTask); }
public JobScheduler( IOptionsMonitor <ScheduledJobOptions <TScheduledJob> > optionsMonitor, IServiceProvider serviceProvider, ILogger <JobScheduler <TScheduledJob> > logger ) { _optionsMonitor = optionsMonitor; _serviceProvider = serviceProvider; _logger = logger; _options = optionsMonitor.CurrentValue; _semaphoreSlim = new SemaphoreSlim(1, 1); _timer = new Timer(TimerCallback, null, Timeout.Infinite, Timeout.Infinite); }