项目: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();
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |