私は WCF サービスで Quartz.Net を使用しましたが、非常にうまく機能しました。Cron トリガーのおかげで柔軟性が高く、基本的にスケジューリングのシナリオのほとんどを解決できます。トリガーをスケジュールするときは、指定する必要があります。 IJob インターフェイスを実装するクラスの型。私の場合、実行メソッドはシングルトン クラス/メソッドを呼び出して、実行する必要があるジョブを実行します。トリガーをRAM(揮発性)またはデータベースに保存するように構成できます。カスタムストレージを指定できると思いますが、私はそのようにはしていません。
Quartz.NET で発生した唯一の問題は、この質問に記載されています。解決した解決策も投稿しました。より具体的な質問がある場合はお知らせください。
これは、Quartz.NET の構成の基本の一部であり、ほとんどがチュートリアルから続いています。
スケジューラをインスタンス化するには、次のようにします。
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
_scheduler = schedulerFactory.GetScheduler();
_scheduler.Start()
ジョブをスケジュールするには、次のようにします
JobDetail jobDetail = new JobDetail("UNIQUE NAME", null, typeof(NotepadJob));
SimpleTrigger triggerToReturn = new SimpleTrigger();
triggerToReturn.StartTimeUtc = DateTime.Now.ToUniversalTime();
_scheduler.ScheduleJob(jobDetail,trigger);
ジョブは次のようになります
internal class NotepadJob : IJob
{
//Open Notepad
}
SQL を使用する場合は、Config ファイルで次のように設定を構成できます。
<configSections>
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<\configSections>
<quartz>
<add key="quartz.scheduler.instanceName" value="DefaultQuartzJobScheduler" />
<add key="quartz.scheduler.instanceId" value="AUTO" />
<add key="quartz.jobstore.clustered" value="true" />
<add key="quartz.jobstore.clusterCheckinInterval" value="15000" />
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.jobStore.useProperties" value="false" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
<add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
<add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.dataSource" value="default" />
<add key="quartz.dataSource.default.connectionString" value="[CONNECTION STRING]" />
<add key="quartz.dataSource.default.provider" value="SqlServer-20" />
<add key="quartz.threadPool.threadCount" value="10" />
</quartz>
-よろしく