前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2022年12月 .NET CORE工具案例-IHostedService实现任务调度

【愚公系列】2022年12月 .NET CORE工具案例-IHostedService实现任务调度

作者头像
愚公搬代码
发布2022-12-07 13:18:39
2940
发布2022-12-07 13:18:39
举报
文章被收录于专栏:历史专栏

文章目录


前言

1.IHostedService是什么

IHostedService 接口为主机托管的对象定义了两种方法:

  • StartAsync(CancellationToken):应仅限于短期任务,因为托管服务是按顺序运行的,在 StartAsync 运行完成之前不会启动其他服务。
  • StopAsync(CancellationToken):在主机执行正常关闭时触发。 StopAsync 包含结束后台任务的逻辑。 实现 IDisposable 和终结器(析构函数)以处置任何非托管资源。

注意:如果应用意外关闭(例如,应用的进程失败),则可能不会调用 StopAsync。 因此,在 StopAsync 中执行的任何方法或操作都可能不会发生。

官网网址:https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.hosting.ihostedservice?view=dotnet-plat-ext-7.0

在这里插入图片描述
在这里插入图片描述

一、IHostedService实现任务调度

1.新建任务调度类

代码语言:javascript
复制
public class TestHostedService : IHostedService, IDisposable
    {
        private Timer? _timer;

        public Task StartAsync(CancellationToken cancellationToken)
        {
            //相当于前端的setInterval定时执行,所以每过1秒都会执行一次
            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));

            return Task.CompletedTask;
        }

        private void DoWork(object? state)
        {
            Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
        }

        public Task StopAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("StopAsync");

            return Task.CompletedTask;
        }


        public void Dispose()
        {
            _timer?.Dispose();
        }
    }
在这里插入图片描述
在这里插入图片描述

2.注册任务调度类

代码语言:javascript
复制
//添加主机服务
builder.Services.AddHostedService<TestHostedService>();
在这里插入图片描述
在这里插入图片描述

3.启动程序

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
    • 1.IHostedService是什么
    • 一、IHostedService实现任务调度
      • 1.新建任务调度类
        • 2.注册任务调度类
          • 3.启动程序
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档