Main初始化启动定时任务使用AddHostedService

这个方法主要是用于项目直接启动后做一下定时任务,则可以直接在Host宿主中注入你的定时执行类,项目启动后他会默认执行定时任务

Host中可以包含多个IHostedService服务实例。当然,如果是Web应用其中一个就是WebHost。Host起来之后,会依次启动所有添加的这些IHostedService服务

Worker就是我们自己定义的一个服务程序。整个系统运行起来后,它会自动调用Worker.StartAsync()方法

public class Program
    {
      
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }).ConfigureServices((hostContext, services) =>
                {
                    //注意这里 
                    services.AddHostedService<Worker>();
                });
        /// <summary>
        /// 注意需要继承IHostedService
        /// </summary>
        public class Worker : IHostedService, IDisposable
        {
            private Timer _timer;
            public static int a = 0;
            public Task StartAsync(CancellationToken cancellationToken)
            {
                _timer = new Timer(dowork, null, TimeSpan.Zero,
                  TimeSpan.FromSeconds(2));//频率两分钟一次
                return Task.CompletedTask;
            }

            public Task StopAsync(CancellationToken cancellationToken)
            {
                _timer?.Change(Timeout.Infinite, 0);
                return Task.CompletedTask;
            }
            public void dowork(object state)
            {
                exec();
            }
            /// <summary>
            /// 执行代码块
            /// </summary>
            public void exec()
            {
                a++;
                Console.WriteLine("第{0}次执行", a);
            }
            public void Dispose()
            {
                _timer?.Dispose();
            }
        }
    }

实现效果

小注释

同样也可以使用继承BackgroundService来代替IHostedService 同样的效果 就直接继承BackgroundService就好 就不需要同时继承IHostedServiceIDisposable

------------------------------------------------------------------------

posted @ 2021-08-04 11:10  原往  阅读(529)  评论(0)    收藏  举报