public void AddSchedule(string cron, string taskName, Dictionary<string, object> opts = null, ScheduleTaskParallelism parallelism = ScheduleTaskParallelism.AllowOthers) { lock (repoLocker) { var e = repo.GetExact(cron, taskName); if (e == null) { e = new RecurrencyEntity() { Cron = cron, Parallelism = parallelism, TaskName = taskName, }; repo.Save(e); repo.LoadSettingsIfNull(e); if (opts != null) { foreach (var p in opts) { e.Settings.SetEntry(p.Key, p.Value); } repo.Update(e); } Reload(); } else { log.Debug("Cron: "+cron+" "+taskName+" already exist in crontab db."); } } }
/// <summary> /// This method is only for paramteter customizing (merge with Schedule(string name, ?) /// TaskName should be preinitialized and point to existing named tp in container. /// </summary> /// <param name="tp"></param> /// <param name="parallelism"></param> /// <param name="dueInSeconds"></param> protected void Schedule(TaskParameters tp, ScheduleTaskParallelism parallelism = ScheduleTaskParallelism.AllowOthers, int dueInSeconds = 0) { lock (runningTasks) { if (!IsStarted) { throw new InvalidOperationException("Task scheduler is not running"); } log.Info("Scheduling " + tp); var entity = new ScheduleEntity() { NextExecution = DateTime.MaxValue, Parallelism = parallelism, TaskName = tp.TaskName, }; lock (repoLocker) { repo.Save(entity); repo.LoadSettingsIfNull(entity); foreach (KeyValuePair <string, object> setting in tp.Settings) { entity.Settings.AddEntry(setting.Key, setting.Value); } entity.NextExecution = DateTime.Now.AddSeconds(Math.Max(0, dueInSeconds)); repo.Update(entity); } } }
public void AddSchedule(string cron, string taskName, Dictionary <string, object> opts = null, ScheduleTaskParallelism parallelism = ScheduleTaskParallelism.AllowOthers) { lock (repoLocker) { var e = repo.GetExact(cron, taskName); if (e == null) { e = new RecurrencyEntity() { Cron = cron, Parallelism = parallelism, TaskName = taskName, }; repo.Save(e); repo.LoadSettingsIfNull(e); if (opts != null) { foreach (var p in opts) { e.Settings.SetEntry(p.Key, p.Value); } repo.Update(e); } Reload(); } else { log.Debug("Cron: " + cron + " " + taskName + " already exist in crontab db."); } } }
public bool Schedule(string name, ScheduleTaskParallelism parallelism = ScheduleTaskParallelism.AllowOthers) { TaskParameters tp = GetNamedTaskParameter(name); if (tp == null) { return(false); } tp.TaskName = name; Schedule(tp, parallelism); return(true); }
public bool Schedule(string name, ScheduleTaskParallelism parallelism = ScheduleTaskParallelism.AllowOthers) { TaskParameters tp = GetNamedTaskParameter(name); if (tp == null) return false; tp.TaskName = name; Schedule(tp, parallelism); return true; }
/// <summary> /// This method is only for paramteter customizing (merge with Schedule(string name, ?) /// TaskName should be preinitialized and point to existing named tp in container. /// </summary> /// <param name="tp"></param> /// <param name="parallelism"></param> /// <param name="dueInSeconds"></param> protected void Schedule(TaskParameters tp, ScheduleTaskParallelism parallelism = ScheduleTaskParallelism.AllowOthers, int dueInSeconds = 0) { lock (runningTasks) { if (!IsStarted) throw new InvalidOperationException("Task scheduler is not running"); log.Info("Scheduling "+tp); var entity = new ScheduleEntity() { NextExecution = DateTime.MaxValue, Parallelism = parallelism, TaskName = tp.TaskName, }; lock (repoLocker) { repo.Save(entity); repo.LoadSettingsIfNull(entity); foreach (KeyValuePair<string, object> setting in tp.Settings) { entity.Settings.AddEntry(setting.Key, setting.Value); } entity.NextExecution = DateTime.Now.AddSeconds(Math.Max(0, dueInSeconds)); repo.Update(entity); } } }