基于后台服务类 BackgroundService 实现,类所在程序集为Microsoft.Extensions.Hosting
1.实现BackgroundService方法ExecuteAsync
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace NetCoreMVC.Cfg
{
///
/// 简单的定时任务执行
///
public class TimedExecutService : BackgroundService
{
public ILogger _logger;
public TimedExecutService(ILogger logger)
{
this._logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
try
{
_logger.LogInformation(DateTime.Now.ToString() + "BackgroundService:启动");
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(5000, stoppingToken); //启动后5秒执行一次 (用于测试)
_logger.LogInformation(DateTime.Now.ToString()+" 执行逻辑");
}
_logger.LogInformation(DateTime.Now.ToString() + "BackgroundService:停止");
}
catch (Exception ex)
{
if (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation(DateTime.Now.ToString() + "BackgroundService:异常" + ex.Message + ex.StackTrace);
}
else
{
_logger.LogInformation(DateTime.Now.ToString() + "BackgroundService:停止");
}
}
}
}
}
2.注册服务
public void ConfigureServices(IServiceCollection services)
{
//注册简单的定时任务执行
services.AddSingleton();
//注册mvc服务
services.AddMvc();
}
3.测试结果