コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            }
        }