ฉันยังใหม่มากกับการใช้ 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 เพียงพิมพ์ไปที่คอนโซลในขณะนี้ Boolean TestFileTrigger.fileExistence มาจากการตรวจสอบว่ามีไฟล์อยู่ในตำแหน่งที่กำหนดหรือไม่ (ซึ่งเป็นเช่นนั้น)
แก้ไข: TestFileTrigger.fileExistence เป็นบูลีน เพิ่มคำจำกัดความของ Job1/Job2 หากสามารถช่วยได้
แก้ไข: ฉันพบว่าหากฉันใส่ Thread.Sleep(TimeSpan.FromSeconds(x));
ก่อนคำสั่ง if คำสั่ง if จะทำงานหากตรงตามเงื่อนไข (โดยที่ x คือจำนวนวินาที) เหตุใดจึงใช้งานได้ในกรณีนี้ แต่ไม่ใช่อย่างอื่น ฉันไม่สามารถรู้ได้เสมอไปว่าจะต้องใช้เวลากี่วินาทีจึงจะเป็นไปตามเงื่อนไข
getnextfiretime
พูดว่าอะไร? quartz-scheduler.org/ api/2.0.0/org/quartz/ - person SpaceBison   schedule 01.07.2014