ASP.NetCore5中定期调用两个后台服务的问题。
创始人
2024-09-17 12:00:55
0

首先,我们需要创建一个基于Timer的后台服务。然后,我们将在Startup.cs中注册他们,以便将它们添加到DI容器中。最后,我们使用IHostedService接口来启动和停止后台任务。

代码示例如下:

1.创建后台服务:

public class MyBackgroundService1 : BackgroundService
{
    private readonly ILogger _logger;

    public MyBackgroundService1(ILogger logger)
    {
        _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("MyBackgroundService1 is running.");

            await Task.Delay(TimeSpan.FromSeconds(10), stoppingToken);
        }
    }
}

public class MyBackgroundService2 : BackgroundService
{
    private readonly ILogger _logger;

    public MyBackgroundService2(ILogger logger)
    {
        _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("MyBackgroundService2 is running.");

            await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
        }
    }
}

2.注册服务:

public void ConfigureServices(IServiceCollection services)
{
    // Add timer based background services
    services.AddHostedService();
    services.AddHostedService();
}

3.启动和停止服务:

public class MyHostedService : IHostedService
{
    private readonly IEnumerable _hostedServices;

    public MyHostedService(IEnumerable hostedServices)
    {
        _hostedServices = hostedServices;
    }

    public async Task StartAsync(CancellationToken cancellationToken)
    {
        foreach (var hostedService in _hostedServices)
        {
            await hostedService.StartAsync(cancellationToken);
        }
    }

    public async Task StopAsync(CancellationToken cancellationToken)
    {
        foreach (var hostedService in _hostedServices.Reverse())
        {
            await hostedService.StopAsync(cancellationToken);

相关内容

热门资讯

讲义辅助"微信赣牌圈... 讲义辅助"微信赣牌圈怎么开挂"开挂(插件)辅助插件(确实有挂)1、下载安装好微信赣牌圈怎么开挂,进入...
透视苹果版!德州透视插件,微信... 透视苹果版!德州透视插件,微信自建房辅助多少钱一个月(透视)开挂辅助软件新2026版【无需打开直接搜...
素来有辅助"随意玩有... >>您好:随意玩有辅助吗确实是有挂的,很多玩家在这款随意玩有辅助吗游戏中打牌都会发现很多用户的牌特别...
最初有辅助"奇迹掌趣... 最初有辅助"奇迹掌趣辅助"开挂(透视)辅助下载(黑科技教程有挂规律);无需打开直接搜索加(薇:136...
透视辅助!pokemmo手机版... 大家好,今天小编来为大家解答pokemmo手机版透视脚本这个问题咨询软件客服可以免费测试直接加微信(...
课程辅助"禅游指尖四... 课程辅助"禅游指尖四川辅助脚本"开挂(平台)辅助工具(有挂教程) >>您好:软件加薇13670430...
起初有辅助"四川游戏... 起初有辅助"四川游戏家园辅助软件合法吗"详细开挂辅助插件有挂讲解(规律教程);无需打开直接搜索薇:1...
最初有开挂"中至赣牌... 最初有开挂"中至赣牌圈挂件多少钱一个"开挂(透视)辅助平台(微扑克教程揭秘有挂) 了解更多开挂安装加...
总结开挂"神兽h5平... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
透视安卓版!三哥玩辅助器软件,... 透视安卓版!三哥玩辅助器软件,微信小程序微乐安徽辅助(透视)开挂辅助神器详细教程!微信小程序微乐安徽...