ASP.NET Core 增长背景定时托管任务

用户云卷云舒  金牌会员 | 2024-6-24 02:44:48 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 556|帖子 556|积分 1668

项目:ASP.NET Core MVC 7.0
简述:
主要创建一个继承BackgroundService类的对象,配合一个定时器,在主程序启动后在背景运行。
1、在项目中创建执行任务的类文件,继承 BackgroundService
  1. public class TestTask : BackgroundService
  2. {
  3.     private Timer? _timer;   //定时器
  4.     /// <summary>
  5.     /// 启动后台托管
  6.     /// </summary>
  7.     /// <param name="stoppingToken"></param>
  8.     /// <returns></returns>
  9.     protected override Task ExecuteAsync(CancellationToken stoppingToken)
  10.     {
  11.          //通过定时器执行具体任务的方法,并设置周期时间
  12.         _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
  13.         return Task.CompletedTask;
  14.     }
  15.     /// <summary>
  16.     /// 执行任务,具体的内容
  17.     /// </summary>
  18.     /// <param name="state"></param>
  19.     private void DoWork(object state)
  20.     {
  21.         //在控制台显示时间
  22.         Console.Clear();
  23.         Console.WriteLine("继续执行:" + DateTime.Now.ToLongTimeString());
  24.         
  25.         //满足某个条件,自销毁后台任务
  26.         if (DateTime.Now.Minute>21)
  27.         {
  28.             Console.WriteLine("最后执行:" + DateTime.Now.ToShortTimeString());
  29.             
  30.             Dispose(); //消耗动作。然后不再执行
  31.         }   
  32.     }
  33.     /// <summary>
  34.     /// 销毁,释放资源
  35.     /// </summary>
  36.     public override void Dispose()
  37.     {
  38.         _timer?.Dispose();  //如果_timer对象不为null,则销毁
  39.         base.Dispose();
  40.     }
  41. }
复制代码
2、在项目启动文件注册任务类 (Program.cs)
  1. //......其他注册
  2. builder.Services.AddHttpContextAccessor();
  3. builder.Services.AddRazorPages();
  4. //这一行就是注册后台任务
  5. builder.Services.AddHostedService<TestTask>();
  6. var app = builder.Build();
  7. //......其他注册
  8. app.Run();
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表