9

私は毎日太平洋時間の深夜に仕事をしなければなりません。Quartz.NETライブラリでMVC3を使用しています。

これが私のコードです:

public static void ConfigureQuartzJobs()
{
    ISchedulerFactory schedFact = new StdSchedulerFactory();

    IScheduler sched = schedFact.GetScheduler();

    DateTime dateInDestinationTimeZone = System.TimeZoneInfo
        .ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, System.TimeZoneInfo.Utc.Id, "Pacific Standard Time").Date;


    IJobDetail job = JobBuilder.Create<TimeJob>()
        .WithIdentity("job1", "group1")
        .Build();

    ITrigger trigger = TriggerBuilder.Create()
        .WithIdentity("trigger1", "group1")
        .StartAt(dateInDestinationTimeZone)
        .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
        .Build();

    sched.ScheduleJob(job, trigger);

    sched.Start();
}

このコードにより、このジョブは最初の深夜(太平洋標準時)に1回だけ実行されます。私はそこに設定しまし.WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())たが、それは機能していません-仕事は毎日繰り返されていません。

毎日それを機能させるために私は何ができますか?

4

2 に答える 2

4

スケジュールされたタスクはWebアプリケーションによってホストされていますか?その場合、そのような問題が発生する可能性があります。Webアプリケーションは、スケジュールされたタスクの実行には適していません。むしろ、スケジュールされたタスクをホストするWindowsサービスを作成する必要があります。

しかし、あなたがチェックするかもしれないいくつかのこともあります:

  1. より短い時間を使用してみてください(つまり、間隔を1分に設定した場合にこれが機能するかどうかを確認してください)。
  2. CronTriggerを試してください-私はそれをWindowsサービスで使用していますが、正常に動作します。

Webアプリケーションでスケジュールされたタスクをホストすることの長所と短所を説明する記事がいくつかあります。これ:http ://www.foliotek.com/devblog/running-a-scheduled-task/ 。

于 2012-04-30T08:25:31.370 に答える
4

この質問は7年前に行われ、すでに回答が受け付けられています。しかし、7年間で少し変更があったと思うので、CronScheduleBuilderを介してこのソリューションを提案します。

        //Constructing job trigger.
        ITrigger trigger = TriggerBuilder.Create()
                          .WithIdentity("Test")
                          .WithSchedule(CronScheduleBuilder
                          .DailyAtHourAndMinute(16,40))
                      .WithSimpleSchedule(x=>x.WithIntervalInMinutes(number)
                          .WithRepeatCount(number) 
                          .Build();

このコードは、この場合は毎日16:40の特定の時間にジョブをトリガーします。インターバル回数で繰り返しカウントを回数

于 2019-06-05T08:43:47.540 に答える