Using Quartz.Net I want to manually trigger a job without a schedule (for now). However the job runs on startup (which I don't want), then fails to respond to a manual trigger (main problem).
private IScheduler _scheduler;
public void SetupAndTestScheduler()
{
ISchedulerFactory sf = new StdSchedulerFactory();
_scheduler = sf.GetScheduler().Result;
_scheduler.Start();
_scheduler.ScheduleJob(
new JobDetailImpl(nameof(TestDataJob), typeof(TestDataJob)), null);
// manually trigger the job
_scheduler.TriggerJob(jobKey: new JobKey(nameof(TestDataJob)));
}
public class TestDataJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
// blah blah blah
}
}
I'm on NetStandard2.0, with Quartz.Net Alpha 3. I'm wondering whether this is a problem with version 3?
In Quartz.Net 3.x Alpha, methods like scheduler.Start, scheduler.ScheduleJob, etc..., are now async, which means you need to await them. What happens in your code is that the Task returned by ScheduleJob is not even executed before the call to Shutdown, as you are not awaiting it.
You can follow the Quick Start Guide to see exactly how to use it.
In a nutshell, what you need to do:
async/await semanticsscheduler.AddJob method (your job must be declared as durable in that case, as you are not associating a trigger with it)scheduler.TriggerJob() method to trigger your jobIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With