public static void AddOrUpdateRecurringJob(RecurringJobInfo jobInfo, IRecurringJobManager jobManager) { var taskType = Type.GetType(jobInfo.Type, AssemblyResolver, null); var taskParameters = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(jobInfo.Paramters), taskType) as ITaskParameters; jobManager.AddOrUpdate(jobInfo.Name, CreateJob(taskParameters), jobInfo.Cron, TimeZoneInfo.Utc, jobInfo.Queue ?? EnqueuedState.DefaultQueue); }
private void OnChanged(object sender, FileSystemEventArgs e) { lock (_fileWatcherLock) { _logger.Info($"File {e.Name} changed, try to reload configuration again..."); var recurringJobInfos = Load().ToList(); if (recurringJobInfos == null || recurringJobInfos.Count == 0) { return; } _builder.Build(() => recurringJobInfos); var serverFilter = FindServerFilter(); if (serverFilter == null) { return; } foreach (var recurringJobInfo in recurringJobInfos) { if (!recurringJobInfo.Enable || recurringJobInfo.ExtendedData == null || recurringJobInfo.ExtendedData.Count == 0) { RecurringJobInfo job = null; serverFilter.RecurringJobInfos.TryRemove(recurringJobInfo.ToString(), out job); continue; } serverFilter.RecurringJobInfos.AddOrUpdate( recurringJobInfo.ToString(), recurringJobInfo, (key, oldValue) => (recurringJobInfo != oldValue) ? recurringJobInfo : oldValue); } } }