public void AddScheduledJobs() { int numScheduledTimes = this.ScheduledTimes.Count; for (int iScheduledTimeSpec = 0; iScheduledTimeSpec < numScheduledTimes; iScheduledTimeSpec++) { this.RemoveScheduledTimeSpecificationAt(0); } DateTime startTime = DateTime.Now; foreach (IScheduledJobSpecification scheduledJobSpec in this.ScheduledJobsListSource.ScheduledJobs) { ScheduledTimeSpecification curTimeSpec = new ScheduledTimeSpecification(); curTimeSpec.ScheduledJob = scheduledJobSpec; curTimeSpec.ScheduledTime = curTimeSpec.ScheduledJob.ScheduleSpecification.CalculateNextScheduledTime(startTime, this.DateOperationsProvider); this.AddScheduledTimeSpecification(curTimeSpec); } }
public void CreateScheduledTimeSpecifications() { // Foreach scheduled job specification from the IScheduledJobSpecificationsListSource. // Starting at the StartDate, going to the EndDate, continue rescheduling each job until the scheduled time is past the start date. this.ScheduledTimeSpecifications.Clear(); List<IScheduledJobSpecification> scheduledJobSpecs = this.ScheduledJobSpecificationsListSource.ScheduledJobs; foreach (IScheduledJobSpecification curScheduledJobSpec in scheduledJobSpecs) { DateTime curScheduledTime = this.StartDate; while (this.EndDate > curScheduledTime) { curScheduledTime = curScheduledJobSpec.ScheduleSpecification.CalculateNextScheduledTime(curScheduledTime, this.DateOperationsProvider); ScheduledTimeSpecification curScheduledTimeSpec = new ScheduledTimeSpecification(); this.ScheduledTimeSpecifications.Add(curScheduledTimeSpec); curScheduledTimeSpec.ScheduledTime = curScheduledTime; curScheduledTimeSpec.ScheduledJob = curScheduledJobSpec; } } }
private void OnScheduledTimeAdded(ScheduledTimeSpecification scheduledTimeSpecification) { if (null != this.ScheduledTimeSpecificationAdded) { this.ScheduledTimeSpecificationAdded(this, new ScheduledTimeSpecificationListChangedEventArgs(scheduledTimeSpecification)); } }
private void AddScheduledTimeSpecification(ScheduledTimeSpecification scheduledTimeSpecification) { this.ScheduledTimes.Add(scheduledTimeSpecification); this.OnScheduledTimeAdded(scheduledTimeSpecification); }
private void Timer_Elapsed(object sender, ElapsedEventArgs e) { // Clear so that new timer can be created. ((Timer)sender).Elapsed -= Timer_Elapsed; DateTime now = DateTime.Now; List<ScheduledTimeSpecification> nextScheduledTimes = new List<ScheduledTimeSpecification>(); for (int iScheduledTime = 0; iScheduledTime < this.ScheduledTimes.Count; iScheduledTime++) { // Get the first scheduled job. ScheduledTimeSpecification curScheduledTimeSpec = this.ScheduledTimes[0]; // Items are sorted by scheduled time. If we get to the point where we need not go further, don't go further. if (TimeSpan.Zero < curScheduledTimeSpec.ScheduledTime - now) { break; } // Remove the first scheduled job. this.RemoveScheduledTimeSpecificationAt(0); // Create the next item. ScheduledTimeSpecification nextScheduledTimeSpec = new ScheduledTimeSpecification(); nextScheduledTimeSpec.ScheduledJob = curScheduledTimeSpec.ScheduledJob; nextScheduledTimeSpec.ScheduledTime = nextScheduledTimeSpec.ScheduledJob.ScheduleSpecification.CalculateNextScheduledTime(now, this.DateOperationsProvider); nextScheduledTimes.Add(nextScheduledTimeSpec); this.JobRepository.Add(curScheduledTimeSpec.ScheduledJob.JobSpecification, curScheduledTimeSpec.ScheduledTime); } foreach (ScheduledTimeSpecification scheduledTimeSpecification in nextScheduledTimes) { this.AddScheduledTimeSpecification(scheduledTimeSpecification); } this.SetTimer(); }
public ScheduledTimeSpecificationListChangedEventArgs(ScheduledTimeSpecification scheduledJobSpecification) { this.ScheduledTimeSpecification = scheduledJobSpecification; }