private static void _fswCfg_Changed(object sender, FileSystemEventArgs e) { lock (_locker) { try { string file = e.FullPath; string plugin = file.Replace(".cfg", ".dll"); if (_plugins.ContainsKey(plugin)) { string cron = ConfigReader.Read(file); if (string.IsNullOrEmpty(cron)) { return; } var info = _plugins[plugin] as PluginInfo; if (info.Cron != cron) { info.Cron = cron; var trigger = _scheduler.GetTriggersOfJob(info.Plugin.Job.Key).Result.FirstOrDefault(); var triggerNew = TriggerBuilder.Create() .WithIdentity("Trigger-" + info.Plugin.Name + DateTime.Now.ToString("yyyyMMddHHmmssfff"), info.Plugin.Group) .ForJob(info.Plugin.Job) .StartNow() .WithCronSchedule(cron) .Build(); _scheduler.RescheduleJob(trigger.Key, triggerNew); WriteLog("Job config changed: " + file); } } } catch (Exception ex) { WriteLog(ex.Message); } } }