Quartzの簡単な使い方
2401 ワード
1、Nuget初期化Quartzパッケージ
プロジェクトの下にある依存項目を右クリック->nugetパッケージの管理->Quartzを参照して検索し、その後のインストール(バージョン3.0.4をインストール)を選択して、弾き出された承認ライセンスで承認を選択します.
ReportJobクラスを新規作成し、以下に示すようにIJobインタフェースを実装します.
タイミング起動方法は以下の通りです
タイミングタスクを呼び出すコードは次のとおりです.
このような簡単なタイミングタスクが完了しました.
プロジェクトの下にある依存項目を右クリック->nugetパッケージの管理->Quartzを参照して検索し、その後のインストール(バージョン3.0.4をインストール)を選択して、弾き出された承認ライセンスで承認を選択します.
ReportJobクラスを新規作成し、以下に示すようにIJobインタフェースを実装します.
[PersistJobDataAfterExecution]
[DisallowConcurrentExecution]
public class ReportJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
var reportDirectory = string.Format("~/reports/{0}/", DateTime.Now.ToString("yyyy-MM"));
reportDirectory = System.Web.Hosting.HostingEnvironment.MapPath(reportDirectory);
if (!Directory.Exists(reportDirectory))
{
Directory.CreateDirectory(reportDirectory);
}
var dailyReportFullPath = string.Format("{0}report_{1}.log", reportDirectory, DateTime.Now.Day);
var logContent = string.Format("{0}==>>{1}{2}", DateTime.Now, "create new log.", Environment.NewLine);
return Task.Factory.StartNew(() => File.AppendAllText(dailyReportFullPath, logContent));
}
}
タイミング起動方法は以下の通りです
public static async Task RunScheduler()
{
try
{
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
//
CronScheduleBuilder builder = CronScheduleBuilder.CronSchedule("30 * * * * ?");//
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger", "group")
.StartNow()
.WithSchedule(builder)
.Build();
IJobDetail job = JobBuilder.Create()// Myclass start
.WithIdentity("job", "group")
.Build();
//
await scheduler.ScheduleJob(job, trigger);
//
await scheduler.Start();
//
//await scheduler.Shutdown(true);
}
catch (SchedulerException se)
{
Console.WriteLine(se);
}
}
タイミングタスクを呼び出すコードは次のとおりです.
RunScheduler().GetAwaiter().GetResult();
このような簡単なタイミングタスクが完了しました.