Quartz.net - пожарный триггер в произвольное время - PullRequest
1 голос
/ 22 марта 2012

У меня есть массив datetime (около 5000 элементов), и я хочу выполнить задание для каждого из этих datetime.Временные значения в массиве являются пользовательскими, а не периодическими, поэтому я не могу использовать CronTrigger и другие.Есть ли простой способ создать триггер, который будет срабатывать в указанное время?Да, я знаю, что могу запускать новый простой триггер (с одним срабатыванием, без повтора) каждый раз после окончания работы, но этот способ мне не удобен.

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Вы можете написать свой собственный триггер и использовать его для выполнения своей работы. Если вы используете v1.0, вам нужно создать класс, расширяющий Trigger. Посмотрите на документы для более подробной информации. Если вы работаете с версией 2.0, вы хотите расширить AbstractTrigger .

0 голосов
/ 04 июня 2015

Вы можете настроить дату и время для триггера. Простой триггер, который будет срабатывать n раз от вашего времени настройки

public class JobScheduler
    {
       public static void Start()
       {
            ISchedulerFactory sf = new StdSchedulerFactory();
            IScheduler sched = sf.GetScheduler();
            DateTime[] Jobtime = new DateTime[5]; //Array Have Job time
            startDate[0] = new DateTime(2015, 6, 3, 16, 57, 0);
            startDate[1] = new DateTime(2015, 6, 3, 16, 59, 0);
            startDate[2] = new DateTime(2015, 6, 3, 17, 1, 0);
            startDate[3] = new DateTime(2015, 6, 3, 17, 4, 0);

            for (int i = 1; i < Jobtime.Count(); i++)
        {

            sched.Start();


            string strjob = "job" + i.ToString();
            string strgroup = "group" + i.ToString();
            string strtigger = "trigger" + i.ToString();

            IJobDetail job = JobBuilder.Create<EmailJob>()
                .WithIdentity(strjob, strgroup)
                .Build();
            ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()

                .WithIdentity(strtigger, strgroup)
                .StartAt(Jobtime[i])

                .Build();

            sched.ScheduleJob(job, trigger);

        }

       }
    }
...