Exemplo n.º 1
0
        /// <summary>
        /// Утановить интервал для триггера
        /// </summary>
        /// <param name="triggerBuilder">Билдер триггера</param>
        /// <param name="settings">Настройки триггера</param>
        /// <returns>Билдер триггера</returns>
        public static TriggerBuilder SetInterval(this TriggerBuilder triggerBuilder, TriggerSettings settings)
        => triggerBuilder.WithSimpleSchedule(builder =>
        {
            switch (settings.IntervalUnit)
            {
            case IntervalUnit.Millisecond:
                builder.WithInterval(TimeSpan.FromMilliseconds(settings.Interval));
                break;

            case IntervalUnit.Second:
                builder.WithIntervalInSeconds(settings.Interval);
                break;

            case IntervalUnit.Minute:
                builder.WithIntervalInMinutes(settings.Interval);
                break;

            case IntervalUnit.Hour:
                builder.WithIntervalInHours(settings.Interval);
                break;

            case IntervalUnit.Day:
                builder.WithInterval(TimeSpan.FromDays(settings.Interval));
                break;

            case IntervalUnit.Week:
                builder.WithInterval(TimeSpan.FromDays(settings.Interval * 7));
                break;

            case IntervalUnit.Month:
                builder.WithInterval(TimeSpan.FromDays(settings.Interval * 30));
                break;

            case IntervalUnit.Year:
                builder.WithInterval(TimeSpan.FromDays(settings.Interval * 365));
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            builder.RepeatForever();
        });
Exemplo n.º 2
0
        /// <summary>
        /// Конфигурирование триггера
        /// </summary>
        /// <param name="scheduler">Планировщик</param>
        /// <param name="settings">Настройки триггера</param>
        /// <returns>Асинхронная операция успешности конфигурирования</returns>
        public static async Task <bool> ConfigureTriggerAsync(this IScheduler scheduler, TriggerSettings settings)
        {
            var triggerKey = new TriggerKey(settings.Name);

            var trigger = await scheduler.GetTrigger(triggerKey);

            if (trigger == null)
            {
                return(false);
            }

            trigger.GetTriggerBuilder()
            .SetInterval(settings)
            .Build();

            if (!scheduler.IsStarted)
            {
                await scheduler.Start(CancellationToken.None);
            }

            return(true);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Запланировать работу
        /// </summary>
        /// <param name="scheduler">Планировщик</param>
        /// <param name="jobType">Тип работы</param>
        /// <param name="settings">Настройки триггера</param>
        /// <param name="map">Параметры для работы</param>
        public static async Task ScheduleJobTrigger(this IScheduler scheduler, Type jobType, TriggerSettings settings, JobDataMap map = null)
        {
            var trigger = TriggerBuilder.Create().StartNow()
                          .WithIdentity(settings.Name)
                          .SetInterval(settings)
                          .Build();

            var jobDetail = JobBuilder.Create(jobType)
                            .UsingJobData(map ?? new JobDataMap())
                            .WithIdentity(settings.Name)
                            .Build();

            await scheduler.ScheduleJob(jobDetail, trigger);

            if (!scheduler.IsStarted)
            {
                await scheduler.Start(CancellationToken.None);
            }
        }