After creating New Quartz by (Quartz Enterprise Scheduler .NET)
with With Cron Schedule, the NextFireTimeUtc
will start one hour after. How can I set it that start instantly?
TriggerBuilder triggerBuilder = TriggerBuilder
.Create()
.WithIdentity(TriggerName, GroupeId)
.WithPriority(1)
.StartNow();
StringBuilder interval;
string cronExpression = default(string);
interval = new StringBuilder();
switch (ruleScheduler.Schedulers.IntervalUnitType)
{
case Scheduler.IntervalUnitTypeInfo.Minute:
{
interval.Append(string.Format("0 0/{0}", ruleScheduler.Schedulers.Interval));
break;
}
case Scheduler.IntervalUnitTypeInfo.Second:
{
interval.Append(string.Format("0/{0} 0", ruleScheduler.Schedulers.Interval));
break;
}
}
if (ruleScheduler.Schedulers.StartTimeOfDay.HasValue)
{
interval.Append(string.Format(" {0}", ruleScheduler.Schedulers.StartTimeOfDay.Value.Hour));
if (ruleScheduler.Schedulers.EndTimeOfDay.HasValue)
{
interval.Append(string.Format("-{0}", ruleScheduler.Schedulers.EndTimeOfDay.Value.Hour));
}
}
else
{
interval.Append("*");
}
string dayOfWeek = string.IsNullOrEmpty(ruleScheduler.Schedulers.DaysOfWeek) ? "?" : ruleScheduler.Schedulers.DaysOfWeek.ToString();
cronExpression = string.Format("{0} * * {1} *", interval.ToString(), dayOfWeek);
triggerBuilder.WithCronSchedule(cronExpression);
trigger = triggerBuilder.Build();
First of all, you should rewrite your trigger building code like this:
Then you pass the trigger to the Scheduler: