ASP.NET Core 增加后台定时托管任务

项目: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();

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值