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.");
         }
     }
 }
Exemplo n.º 2
0
 /// <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.");
         }
     }
 }
Exemplo n.º 4
0
        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);
         }
     }
 }