首页 > 解决方案 > 如何以编程方式停止 HostedService?

问题描述

我正在构建一个 dotnet 核心 HostedService 应用程序。我需要在一段时间后停止申请。

我怎样才能阻止它?

我试图添加到 StartAsync 方法

await Task.Delay(5000);
Environment.Exit(0);

主要的:

static Task Main(string[] args)
{
    var hostBuilder = new HostBuilder()
        .ConfigureServices((hostContext, services) =>
        {
            services.AddHostedService<EventsService>();
        })
        .UseLogging();

    return hostBuilder.RunConsoleAsync();
}

它不起作用。我怎样才能正确地阻止它?

标签: c#asp.net-coreasp.net-core-hosted-services

解决方案


RunConsoleAsync接受一个CancellationToken. 您可以创建一个CancellationTokenSource在给定毫秒数后发出取消信号的信号:

var cancellationTokenSource = new CancellationTokenSource(5000);

return hostBuilder.RunConsoleAsync(cancellationTokenSource.Token);

这样,应用程序在大约五秒钟后关闭。


推荐阅读