ASP.netcore中手动取消BackgroundService的方法是什么?
创始人
2024-09-18 16:30:16
0

在ASP.net core中,BackgroundService是一种基于HostedService的服务,它会在后台运行。有时候,我们会需要手动取消BackgroundService的运行,而不是等待它自己终止。以下是一种手动取消BackgroundService的方法:

1.定义一个BackgroundService的子类,重写ExecuteAsync()方法:

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.");

    while (!stoppingToken.IsCancellationRequested)
    {
        _logger.LogInformation("MyBackgroundService is running.");
        await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
    }

    _logger.LogInformation("MyBackgroundService is stopping.");
}

}

2.在Startup.cs的ConfigureServices()方法中注册MyBackgroundService:

services.AddHostedService();

3.在需要手动取消MyBackgroundService的地方,注入IHostedService,然后调用Cancel()方法即可取消:

public class SomeController : Controller { private readonly IHostedService _hostedService;

public SomeController(IHostedService hostedService)
{
    _hostedService = hostedService;
}

public IActionResult CancelService()
{
    var backgroundService = _hostedService as MyBackgroundService;
    if (backgroundService != null)
    {
        backgroundService.StopAsync(CancellationToken.None).Wait();
        return Ok("MyBackgroundService is cancelled.");
    }

    return BadRequest("MyBackgroundService is not found.");
}

}

以上代码示例演示了如何手动取消ASP.net core中的BackgroundService。通过继承BackgroundService并重写ExecuteAsync()方法实现后台服务的逻辑,通过IHostedService注入并调用StopAsync()方法来手动取消服务的运行。

相关内容

热门资讯

传递经验!都莱大菠萝辅助器(透... 传递经验!都莱大菠萝辅助器(透视)红龙poker辅助指令(2026新版教程揭秘有挂)1、下载安装好都...
热门推荐!好玩贰柒拾辅助(透视... 热门推荐!好玩贰柒拾辅助(透视)werplan透视挂(透牌教程有挂头条) 【无需打开直接搜索加薇13...
一分钟教会你!潮友会插件(透视... 一分钟教会你!潮友会插件(透视)hhpoker德州牛仔视频(解密教程有挂猫腻) 了解更多开挂安装加(...
透视美元局!久久互娱科技(透视... 透视美元局!久久互娱科技(透视)wepoker透视脚本是什么(普及教程有挂分享)1、下载安装好wep...
推荐十款!雀神山庄麻将辅助器(... 推荐十款!雀神山庄麻将辅助器(透视)wepoker怎么挂飞机(软件教程有挂工具);无需打开直接搜索加...
透视私人局!哈局八张透视辅助(... 透视私人局!哈局八张透视辅助(透视)aapoker辅助器怎么用(教你教程确实有挂)这是一款可以让一直...
每日必看!都莱大菠萝辅助器(透... 都莱大菠萝辅助器是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
重大通报!新上游辅助软件(透视... 重大通报!新上游辅助软件(透视)we poker插件(可靠技巧确实有挂)>>您好:软件加136704...
透视肯定!潮汕汇挂(透视)we... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
今日重大通报!开心赢三张自建房... 今日重大通报!开心赢三张自建房有挂吗(透视)wepoker透视脚本免费使用视频(玩家教程有挂秘笈)1...