private void RunJobs(TinyCronTimespan timespan) { var jobs = _cronJobs .Where(j => j.ShouldRun(timespan.Beginning, timespan.Ending)); foreach (var job in jobs) { try { if (Events.OnJobRunInitiated != null) { Events.OnJobRunInitiated(job); } job.Run(); if (Events.OnJobRunCompleted != null) { Events.OnJobRunCompleted(job); } } catch (Exception ex) { if (Events.OnException != null) { Events.OnException(ex); } if (Events.OnJobRunFailed != null) { Events.OnJobRunFailed(job); } } } }
private TinyCronTimespan CalculateNextTimespan() { var utcNow = UtcNow(); if (_timespan == null) { _timespan = new TinyCronTimespan(utcNow, utcNow); } else { _timespan.Update(_timespan.Ending.AddTicks(1), utcNow); } return(_timespan); }
public void Stop() { if (!IsRunning) { return; } IsRunning = false; _timespan = null; if (Events.OnStopped != null) { Events.OnStopped(); } }