原因: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);
}
}