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 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.");
         }
     }
 }