bugfix> c# > 投稿

Quartzの仕事の一部をブロックして、休日に実行したいトリガーに関するQuartzの公式ページ、私たちは読むことができます:

Quartz.NET Calendar objects implementing ICalendar interface can be associated with triggers at the time the trigger is stored in the scheduler. Calendars are useful for excluding blocks of time from the the trigger’s firing schedule. For instance, you could create a trigger that fires a job every weekday at 9:30 am, but then add a Calendar that excludes all of the business’s holidays.

私のトリガーは設定ファイルで定義されています、例えば:

<trigger>
  <simple>
    <name>a trigger</name>
    <group>a trigger group</group>
    <description>a trigger description</description>
    <job-name>AJobName</job-name>
    <job-group>a job group</job-group>
    <job-data-map>
      <entry>
        <key>param1</key>
        <value>param1value</value>
      </entry>
    </job-data-map>
    <repeat-count>-1</repeat-count>
    <repeat-interval>300000</repeat-interval>
  </simple>
</trigger>

C#コードを変更せずに、休日カレンダーの日付にトリガーが起動するのをブロックできますか? そうでない場合は、少なくとも構成にトリガー定義を保持し、コードにカレンダーを追加して特定のトリガーに割り当てることはできますか?

したがって、このプログラマチックなソリューションは私が探しているものではありません:プログラムでトリガーを作成し、カレンダーを割り当てる。

回答 1 件
  • トリガーXML構成では、名前でカレンダーを構成できます。

    <trigger>
      <simple>
        <calendar-name>myHolidayCalendar<calendar-name>
      </simple>
    </trigger>
    
    

    これが機能するには、休日カレンダーをスケジューラに登録する必要があります。

    var calendar = new HolidayCalendar();
    calendar.addExcludedDate(DateTime.Today);
    scheduler.addCalendar("myHolidayCalendar", calendar, false);
    
    

あなたの答え