public ScheduleJob AddJob(ScheduleTask task, DateTime executionTime, bool doRepeat, int? repeatPeriod, bool tryRecover) { _log.Write("Добавление нового таска " + task.Name); ScheduleJob newJob = new ScheduleJob { CreationDate = DateTime.Now, ExecutionDate = DateTime.Now, NextExecutionDate = executionTime, Task = task.Serialize(), State = (byte)JobState.ReadyToStart, RepeatPeriod = repeatPeriod, DoRepeat = doRepeat, TryRecover = tryRecover, IsUnique = task.IsUnique, Title = task.Name, Type = task.GetType().FullName }; if (newJob.IsUnique) { var oldjob = DataService.PerThread.ScheduleJobSet.FirstOrDefault(x => x.Type == newJob.Type && (x.State == (byte)JobState.ReadyToStart || x.State == (byte)JobState.ReadyToRecover || x.State == (byte)JobState.Started)); if (oldjob != null) { if (oldjob.State == (byte)JobState.Started) { } else { oldjob.RepeatPeriod = newJob.RepeatPeriod; oldjob.DoRepeat = newJob.DoRepeat; oldjob.TryRecover = newJob.TryRecover; oldjob.Title = newJob.Title; DataService.PerThread.SaveChanges(); } return oldjob; } } SaveJobsToDb(newJob); return newJob; }
public ScheduleJob AddJob(ScheduleTask task, DateTime executionTime, bool doRepeat, int?repeatPeriod, bool tryRecover) { _log.Write("Добавление нового таска " + task.Name); ScheduleJob newJob = new ScheduleJob { CreationDate = DateTime.Now, ExecutionDate = DateTime.Now, NextExecutionDate = executionTime, Task = task.Serialize(), State = (byte)JobState.ReadyToStart, RepeatPeriod = repeatPeriod, DoRepeat = doRepeat, TryRecover = tryRecover, IsUnique = task.IsUnique, Title = task.Name, Type = task.GetType().FullName }; if (newJob.IsUnique) { var oldjob = DataService.PerThread.ScheduleJobSet.FirstOrDefault(x => x.Type == newJob.Type && (x.State == (byte)JobState.ReadyToStart || x.State == (byte)JobState.ReadyToRecover || x.State == (byte)JobState.Started)); if (oldjob != null) { if (oldjob.State == (byte)JobState.Started) { } else { oldjob.RepeatPeriod = newJob.RepeatPeriod; oldjob.DoRepeat = newJob.DoRepeat; oldjob.TryRecover = newJob.TryRecover; oldjob.Title = newJob.Title; DataService.PerThread.SaveChanges(); } return(oldjob); } } SaveJobsToDb(newJob); return(newJob); }