You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

IHostedService未在CTRL+C时调用StopAsync。

在IHostedService实现中,需要注册控制台取消令牌(CancellationToken)以便在收到CTRL+C时执行清理操作。如果未执行此操作,则应用程序将直接关闭,可能导致数据损失或其他问题。以下是一个示例:

public class MyService : IHostedService
{
    private readonly ILogger<MyService> _logger;
    private readonly CancellationTokenSource _cancellationTokenSource;

    public MyService(ILogger<MyService> logger)
    {
        _logger = logger;
        _cancellationTokenSource = new CancellationTokenSource();
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        _logger.LogInformation("MyService is starting.");

        // Register the cancellation token from the console
        Console.CancelKeyPress += (sender, args) =>
        {
            args.Cancel = true;
            _cancellationTokenSource.Cancel();
            _logger.LogInformation("CTRL+C received. Stopping MyService.");
        };

        // Do some work
        return Task.Run(async () =>
        {
            while (!_cancellationTokenSource.Token.IsCancellationRequested)
            {
                _logger.LogInformation("MyService is working.");
                await Task.Delay(TimeSpan.FromSeconds(1), _cancellationTokenSource.Token);
            }
        }, _cancellationTokenSource.Token);
    }

    public async Task StopAsync(CancellationToken cancellationToken)
    {
        _logger.LogInformation("MyService is stopping.");

        // Clean up resources
        // ...

        // Wait for the work to complete
        await Task.CompletedTask;
    }
}

在这个示例中,我们注册了Console.CancelKeyPress事件,以便在收到CTRL+C时调用CancellationTokenSource的Cancel方法。这将触发StopAsync方法的调用,允许我们执行清理操作并停止服务。请注意,我们还在Task.Run中使用了CancellationTokenSource.Token,以便在取消时终止工作线程。

使用此方法,我们可以确保IHostedService能够正确地响应CTRL+C,并在关闭应用程序时执行必要的清理操作。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

IHostedService未在CTRL+C时调用StopAsync。 -优选内容

IHostedService未在CTRL+C时调用StopAsync。 -相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询