/// <summary>
/// 定时任务
/// </summary>
public class TimeJobService : BackgroundService
{
private readonly ITaskServices _service;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="service"></param>
public TimeJobService(ITaskServices service)
{
_service = service;
}
/// <summary>
///
/// </summary>
/// <param name="stoppingToken"></param>
/// <returns></returns>
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
await new TaskFactory().StartNew(() =>
{
try
{
//满足某种条件执行 比如每天凌晨执行
var time = DateTime.Now;
var nowDay = DateTime.Now.ToString("yyyy-MM-dd");
var benginDate = DateTime.Parse(nowDay + " 00:00:01");
var endDate = DateTime.Parse(nowDay + " 00:11:01");
if (time >= benginDate && time <= endDate)
{
_service.TaskRun();
}
}
catch (Exception e)
{
}
//定时任务休眠,10分钟执行一次
Thread.Sleep(60 * 1000 * 10);
});
}
}
}
Startup.cs注入
//自动注入定时器开始,//后台任务启动专用.
services.AddTransient<Microsoft.Extensions.Hosting.IHostedService, TimeJobService>();