3

私は Quartz.net と cron 式にまったく慣れていないため、データベースから取得する値に基づいて月次、週次、および日次で実行する必要がある c# dotnet アプリケーションで Quartz.net スケジューラを作成する必要があります。

スケジュールの詳細が含まれているテーブル。

Id EffectiveDate  StartTime  Frequency  
 1  2012-04-22      20:55      Daily       
 2  2012-04-22      10:12      Weekly     
 3  2012-04-22      17:00      Daily   
 4  2012-04-23      02:15      Monthly   
 5  2012-04-26      18:30      Daily        
 6  2012-04-27      11:45      Weekly

この問題を解決するのを手伝ってください。

4

1 に答える 1

3

@ user1301587、うまくいけば、あなたは前進する方法を見つけましたが、私はあなたの質問がまだGoogleでかなり高く表示されていることに気付きました.

  1. データソースからスケジュールをフェッチします (この場合、RDBMS データベース テーブルのように見えます)。
  2. スケジュールのリストを繰り返し処理し、スケジュールを使用して CronScheduleBuilder のインスタンスを構築します。

    string cronExpression = string.Format("{0} {1} {2} {3} {4} {5}"、secondPart、minutePart、hourPart、dayOfMonthPart、monthPart、dayOfWeekPart );

    IScheduleBuilder scheduleBuilder = CronScheduleBuilder
                    .CronSchedule(cronExpression)
                    .InTimeZone(TimeZoneInfo.Utc);
    

たとえば、cron 式0 26 6 ** ? 毎日午前 6 時 26 分にジョブを実行します 1 つの落とし穴は、タイム ゾーンを指定しない場合、Quartz が変換を適用して、指定された時刻を現在のタイム ゾーンに基づいて UTC 時間に変換することです。

上記で作成したスケジュールを使用してトリガーを作成できます。

ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                .WithIdentity("TestTrigger")
                .WithSchedule(scheduleBuilder)
                .Build();

このサイトを使用して、 Quart.Netスタイルの式を作成してください

于 2012-11-05T06:36:20.820 に答える