1

以下のコードがあります。構成設定が設定されていない場合は、毎日 17:00 に実行されると予想されます。それ以外の場合は、構成設定が使用されます。これまでのところ問題はありません。変数は正しく設定されています。ただし、毎日ではなく、毎分ジョブが実行されるため、理由がわかりません。スケジューラーが正しく設定されていませんか?

        TimeSpan timeOfExecution;

        if (!TimeSpan.TryParse(ConfigurationManager.AppSettings["TimeOfExecution"], out timeOfExecution))
        {
            timeOfExecution = new TimeSpan(17, 0, 0);

        }

       var job = JobBuilder.Create<DailyReportJob>()
            .WithIdentity("DailyReportJob")
            .Build();

        var trigger = TriggerBuilder.Create()
            .WithIdentity("DailyReportTrigger")
            .WithDailyTimeIntervalSchedule(s => s.OnEveryDay().StartingDailyAt(new TimeOfDay(timeOfExecution.Hours, timeOfExecution.Minutes)))
            .Build();

        Scheduler.ScheduleJob(job, trigger);
        Scheduler.ListenerManager.AddJobListener(AutofacJobListener);
        Scheduler.Start();
4

1 に答える 1

2

特に指定していないため、このトリガーのデフォルトの時間は毎分です。

次のコードを使用して、すべての間隔を確認できます。

var dt = trigger.GetNextFireTimeUtc();

for (int i = 0; i < 10; i++)
{
    if (dt == null)
        break;

    Console.WriteLine(dt.Value.ToLocalTime());
    dt = trigger.GetFireTimeAfter(dt);
}

ジョブを 1 日 1 回午後 5 時に実行するようにスケジュールする場合は、コードを変更して 24 時間間隔を追加できます。

var trigger = TriggerBuilder.Create()
    .WithIdentity("DailyReportTrigger")
    .WithDailyTimeIntervalSchedule(s => s.OnEveryDay().StartingDailyAt(new TimeOfDay(timeOfExecution.Hours, timeOfExecution.Minutes)))
    .WithIntervalInHours(24)
    .Build();
于 2013-10-28T19:19:45.907 に答える