1、自定义类型实现定时任务方法
/// <summary>
/// 定时任务服务
/// </summary>
public class TimedBackgroundService : BackgroundService
{
private Timer? _timer;
/// <summary>
/// 异步执行方法
/// </summary>
/// <param name="stoppingToken"></param>
/// <returns></returns>
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
/// <summary>
///
/// </summary>
/// <param name="state"></param>
private void DoWork(object? state)
{
var date = DateTime.Now.ToString("T");//16:30:15
if (date != "00:00:00")
{
var msg = $"{DateTime.Now}-你好";
TextLogHelper.WriteTextMsg("a/b/c", msg);
}
}
/// <summary>
/// 销毁释放资源
/// </summary>
public override void Dispose()
{
base.Dispose();
_timer?.Dispose();
}
}
2、添加服务层扩展
/// <summary>
/// 扩展方法
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// 添加服务层扩展
/// </summary>
/// <param name="services"></param>
public static void AddScheduledTasksService(this IServiceCollection services)
{
services.AddHostedService<TimedBackgroundService>();//注册定时任务
}
}
3、Program调用方法
builder.Services.AddScheduledTasksService();//定时任务
.net core 基于 IHostedService 实现定时任务
于 2022-10-28 16:48:05 首次发布