public ScheduledTask(string taskName, bool runOnServerStart, ScheduledTaskInterval interval) { TaskName = taskName; Interval = interval; RunOnServerStart = runOnServerStart; StartTimer(TryGetLastInterval()); }
private void StartTimer(ScheduledTaskInterval interval) { if (timer == null) { timer = new Timer(); } timer.Interval = interval.Interval; timer.Elapsed += Timer_Elapsed; timer.Start(); }
private ScheduledTaskInterval TryGetLastInterval() { DateTime?nextEvent = ScheduleNextEventsRepository.Instance.GetNext(TaskName); ScheduledTaskInterval nextEventInterval = null; if (nextEvent != null) { var nextDate = (nextEvent - DateTime.Now); nextEventInterval = new ScheduledTaskInterval((int)nextDate.Value.Days, (int)nextDate.Value.TotalHours, (int)nextDate.Value.TotalMinutes); if (nextEventInterval.Interval <= 0) { nextEvent = null; } } return(nextEvent == null ? Interval : nextEventInterval); }
internal void SetNext(string taskName, ScheduledTaskInterval baseInterval) { lock (locker) { DateTime nextEvent = DateTime.Now .AddDays(baseInterval.Days) .AddHours(baseInterval.Hours) .AddMinutes(baseInterval.Minutes); var events = GetNextEvents(); var evt = events.FirstOrDefault(e => e.TaskName.Equals(taskName)); if (evt == null) { events.Add(new ScheduleNextEvent(taskName, nextEvent)); } else { evt.NextEvent = nextEvent; } SaveNextEvents(events); } }