Beispiel #1
0
        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);
                }
            }
        }