В настоящее время я пытаюсь планировать задачи, используя Quartz.NET для бота Discord, который я разрабатываю. Вот как я обработал процесс планирования:
//guildEvent.Date is 2019-11-2 2:05PM
DateTime eventTime = DateTime.Parse(guildEvent.Date,null);
var timeUntil = eventTime.Subtract(DateTime.UtcNow);
var timeUntilString = $"{timeUntil.Hours}h {timeUntil.Minutes}m";
//By debugging, timeUntilString is returning 15m and 5s, but the task below still executes
//as soon as it's called anyways.
if (eventTime.CompareTo(DateTime.UtcNow) >= 0) {
IJobDetail job = JobBuilder.Create<EventJob>()
.WithIdentity(guildEventID, guildID.ToString())
.Build();
job.JobDataMap["discordClient"] = client;
job.JobDataMap["guildEvent"] = guildEvent;
var trigger = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity(guildEventID + "_TRIGGER", "guildevents")
.StartAt(eventTime)
.ForJob(guildEventID, guildID.ToString())
.Build();
Sched.Start();
Sched.ScheduleJob(job, trigger);
}
Независимо от timeUntilString
, указывающего разницу во времени более 15 минут, эта задача по-прежнему выполняется, как только я вызываю Sched.ScheduleJob(job, trigger)
независимо от этого.