项目:ASP.NET Core MVC 7.0
简述:
主要创建一个继承BackgroundService类的对象,配合一个定时器,在主程序启动后在后台运行。
1、在项目中创建执行任务的类文件,继承 BackgroundService
public class TestTask : 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(10));return Task.CompletedTask;}/// <summary>/// 执行任务,具体的内容/// </summary>/// <param name="state"></param>private void DoWork(object state){//在控制台显示时间Console.Clear();Console.WriteLine("继续执行:" + DateTime.Now.ToLongTimeString());//满足某个条件,自销毁后台任务if (DateTime.Now.Minute>21){Console.WriteLine("最后执行:" + DateTime.Now.ToShortTimeString());Dispose(); //消耗动作。然后不再执行} }/// <summary>/// 销毁,释放资源/// </summary>public override void Dispose(){_timer?.Dispose(); //如果_timer对象不为null,则销毁base.Dispose();}}
2、在项目启动文件注册任务类 (Program.cs)
//......其他注册
builder.Services.AddHttpContextAccessor();
builder.Services.AddRazorPages();//这一行就是注册后台任务
builder.Services.AddHostedService<TestTask>();var app = builder.Build();
//......其他注册app.Run();