2
私はいくつかの条件に基づいて電子メールを自動的に送信するために、C#.Net WebサイトにQuartz.netライブラリを含めました。私はRepeatForever()で仕事を始めました。私はデータベースからスケジューラの設定を取得しています。ジョブが既に開始されているときは、データベース内のスケジューラの設定が変更されているかどうかを確認する必要があります。スケジューラが新しい設定を動的に実行できるように、これまで私はこれをしています:C#でQuartzジョブスケジューラをデータベースから動的に再スケジュールする方法は?
public void StartJob()
{
var reminderSettings = GetReminderSettings(); //getting these settings from database
var count = GetUnpaidInvoicesListCount();
var intervalBtwnReminders = 0;
if (reminderSettings?.RemindersGap != null)
{
intervalBtwnReminders = (int)(reminderSettings.RemindersGap);
}
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// create job
IJobDetail job = JobBuilder.Create<EmailJob>()
.WithIdentity("job1", "group1")
.Build();
// create trigger
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithSimpleSchedule(x =>
{
x.WithIntervalInMinutes(intervalBtwnReminders).RepeatForever();
})
.Build();
sched.ScheduleJob(job, trigger);
}
私はそれを得ることはできませんでした、あなたのソリューションをもう少し説明してください。設定のデータベースへの呼び出し先 –
@ Harry.Naeemもう少し説明を加え、パラメータtimespanをintervalに変更してより明確にしました。そして、ドキュメントヘッダを追加しました。私はそれが今より理解できることを願っています。 – Rabban
古いトリガが開始された後(sched.Start())または後(sched.ScheduleJob(job、trigger))、GetTrigger()を使用する必要がありますか? –