BackgroundService完成其分配任务后会发生什么?
创始人
2024-11-20 04:30:02
0

在ASP.NET Core中,BackgroundService是一个抽象类,用于定义一种长时间运行的后台任务。当任务完成其分配的工作后,BackgroundService会终止。

以下是一个示例代码,演示了如何使用BackgroundService完成任务后发生的情况:

using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

public class MyBackgroundService : BackgroundService
{
    private readonly ILogger _logger;

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

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        _logger.LogInformation("MyBackgroundService is starting.");

        // 模拟后台任务的工作
        for (int i = 0; i < 5; i++)
        {
            if (stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("MyBackgroundService is stopping.");
                break;
            }

            _logger.LogInformation($"MyBackgroundService is doing work {i}.");
            await Task.Delay(1000, stoppingToken);
        }

        _logger.LogInformation("MyBackgroundService has completed its work.");
    }
}

public class Program
{
    public static async Task Main(string[] args)
    {
        var builder = new HostBuilder()
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.AddConsole();
            })
            .ConfigureServices((hostContext, services) =>
            {
                services.AddHostedService();
            });

        await builder.RunConsoleAsync();
    }
}

在上面的示例中,MyBackgroundService继承了BackgroundService类,并实现了ExecuteAsync方法。在ExecuteAsync方法中,我们可以编写实际的后台任务逻辑。在这个示例中,我们使用了一个循环来模拟后台任务的工作,每次循环都会执行一些工作,并通过Task.Delay方法模拟工作的延迟。

当任务完成其工作后,MyBackgroundService会自动终止,并通过ILogger记录日志。在Main方法中,我们将MyBackgroundService添加为托管服务,并使用HostBuilder来运行应用程序。

当你运行这个示例时,你会看到类似以下的日志输出:

MyBackgroundService is starting.
MyBackgroundService is doing work 0.
MyBackgroundService is doing work 1.
MyBackgroundService is doing work 2.
MyBackgroundService is doing work 3.
MyBackgroundService is doing work 4.
MyBackgroundService has completed its work.

这说明BackgroundService完成其分配任务后会终止,并且不再执行任何工作。

相关内容

热门资讯

突发!随意玩辅助器视频透视挂!... 突发!随意玩辅助器视频透视挂!果然真的有辅助下载(有挂工具)-哔哩哔哩1、下载好随意玩辅助器视频透视...
截至发稿!微信卡五星辅助器!真... 截至发稿!微信卡五星辅助器!真是真的是有辅助挂(发现有挂)-哔哩哔哩1、截至发稿!微信卡五星辅助器!...
做出回应!衢州都莱破解器!真是... 做出回应!衢州都莱破解器!真是有挂辅助软件(有挂实锤)-哔哩哔哩小薇(辅助器软件下载)致您一封信;亲...
今天下午!八仙游戏辅助!一贯存... 今天下午!八仙游戏辅助!一贯存在有辅助软件(有挂讲解)-哔哩哔哩1、进入到八仙游戏辅助是否有挂之后,...
经调查!道游辅助脚本!确实是真... 经调查!道游辅助脚本!确实是真的辅助脚本(有挂存在)-哔哩哔哩1、全新机制【道游辅助脚本ai辅助工具...
据相关数据显示!陕麻圈黑科技!... 据相关数据显示!陕麻圈黑科技!切实是有辅助软件(有挂详细)-哔哩哔哩1、进入游戏-大厅左侧-新手福利...
不少玩家反映!福州十八扑有外g... 不少玩家反映!福州十八扑有外g挂吗!其实有挂辅助修改器(详细教程)-哔哩哔哩1、完成福州十八扑有外g...
记者获悉!福建兄弟13水辅助!... 记者获悉!福建兄弟13水辅助!总是是真的辅助安装(有挂方式)-哔哩哔哩1、完成福建兄弟13水辅助辅助...
截至目前!天天贵阳app破解版... 截至目前!天天贵阳app破解版!都是真的有辅助插件(有挂解惑)-哔哩哔哩1、实时天天贵阳app破解版...
截至发稿!掌中乐游戏中心云南辅... 截至发稿!掌中乐游戏中心云南辅助!一贯存在有辅助app(有挂规律)-哔哩哔哩掌中乐游戏中心云南辅助是...