原因:Hangfire定時作業時爲了不需要每加一個作業都需要添加一行定時作業代碼。
解決方案:
- 定義重複作業接口
interface IRecurringJob
{
string CronExpression { get; set; }
void ExecuteJob();
}
2.實現重複作業接口
public class OrderJob : IRecurringJob
{
string _cronExpression = "*/5 * * * * ?";
public string CronExpression
{
get
{
return _cronExpression;
}
set
{
value = _cronExpression;
}
}
public void ExecuteJob()
{
File.AppendAllText("Job\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt", "訂單重複作業執行:" + DateTime.Now + System.Environment.NewLine);
}
}
- Startup類中ConfigureServices注入。
services.AddSingleton<IRecurringJob, OrderJob>();
- Startup類中Configure添加如下代碼
app.Run(async (context) =>
{
var jobs=app.ApplicationServices.GetServices(typeof(IRecurringJob));
foreach (var item in jobs)
{
RecurringJob.AddOrUpdate(() => ((IRecurringJob)item).ExecuteJob(), ((IRecurringJob)item).CronExpression);
}
}