Я очень новичок в использовании Quartz, и у меня есть вопрос относительно триггеров. Можно ли запускать на основе существования файла? Я хотел бы, чтобы Quartz выполнял задание до тех пор, пока не будет найден определенный файл, затем прекратил выполнение этого задания и, возможно, перешел к другому.
Например, я хотел бы сделать что-то вроде этого:
(1) Job1 проверяет наличие файла File.txt в данном каталоге каждые 60 секунд.
(2) Если файл File.txt найден, запустите Job2. Job1 прекращает проверку существования файла.
Прямо сейчас у меня есть:
// Job definitions
var Job1 = JobBuilder.Create<TestEmail>().WithIdentity("job1", "group1").Build();
var Job2 = JobBuilder.Create<TestFileTrigger>().WithIdentity("job2", "group2").Build();
// Triggers
ITrigger trigger1 = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1").StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())
.Build();
ITrigger trigger2 = TriggerBuilder.Create()
.WithIdentity("trigger2", "group2").StartNow()
.Build();
// Schedule jobs
scheduler.ScheduleJob(Job1, trigger1);
if (TestFileTrigger.fileExistence == true)
{
scheduler.ScheduleJob(Job2, trigger2);
}
но похоже, что Job2 никогда не запускается.
TestEmail и TestFileTrigger просто выводят на консоль в данный момент. Логическое значение TestFileTrigger.fileExistence исходит из проверки существования файла в заданном месте (что и происходит).
Изменить: TestFileTrigger.fileExistence является логическим значением. Добавлены определения Job1/Job2, если это поможет.
Изменить: я обнаружил, что если я поставлю Thread.Sleep(TimeSpan.FromSeconds(x));
перед оператором if, оператор if будет выполняться, если условие будет выполнено. (Где x — некоторое количество секунд.) Почему это работает в этом случае, а не в другом? Я не всегда могу знать, сколько секунд потребуется для выполнения условия.
getnextfiretime
? quartz-scheduler.org/ API/2.0.0/org/кварц/ - person SpaceBison   schedule 01.07.2014