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();

相关推荐

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

    2024-06-06 02:32:06       9 阅读
  2. C# BackgroundWorker 后台任务

    2024-06-06 02:32:06       30 阅读
  3. iOS 后台任务总结

    2024-06-06 02:32:06       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 02:32:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 02:32:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 02:32:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 02:32:06       20 阅读

热门阅读

  1. 阿里云计算之Linux目录学习笔记(三)

    2024-06-06 02:32:06       6 阅读
  2. python多线程

    2024-06-06 02:32:06       13 阅读
  3. Redis一键巡检脚本

    2024-06-06 02:32:06       8 阅读
  4. MySQL 连接池在 Python 中的深度探索与实践

    2024-06-06 02:32:06       10 阅读
  5. FreeRTOS学习笔记-基于stm32(10)事件标志组

    2024-06-06 02:32:06       10 阅读
  6. MySql和Oracle表分区

    2024-06-06 02:32:06       10 阅读
  7. 14.FreeRTOS 流媒体缓存 Stream Buffer

    2024-06-06 02:32:06       9 阅读
  8. tcp三次握手四次挥手

    2024-06-06 02:32:06       11 阅读