C# 关机。Netcore IHostedService作为控制台应用程序

C# 关机。Netcore IHostedService作为控制台应用程序,c#,.net-core,C#,.net Core,我在.netcore2.2中构建了通用主机(IHostedService)。我正在以RunConsoleAsync()的身份运行HostBuilder。 RunConsoleAync()将等待Ctrl+C关闭应用程序。 我希望在StartAsync()进程完成后立即关闭控制台应用程序,而不是用户必须按ctrl+c 我尝试使用新的CancellationToken(true)调用StopAsync(),但它对我没有帮助 我将此开发为IHostedService,因为此应用程序将部署在多个平台上。我

我在.netcore2.2中构建了通用主机(IHostedService)。我正在以RunConsoleAsync()的身份运行HostBuilder。 RunConsoleAync()将等待Ctrl+C关闭应用程序。 我希望在StartAsync()进程完成后立即关闭控制台应用程序,而不是用户必须按ctrl+c

我尝试使用新的CancellationToken(true)调用StopAsync(),但它对我没有帮助


我将此开发为IHostedService,因为此应用程序将部署在多个平台上。

我假设您已经准备好了
IHostedService
实现。您只需注入
IHostApplicationLifetime
,然后使用它停止应用程序,如下所示:

    public class Service : IHostedService
{
    private readonly IHostApplicationLifetime _applicationLifetime;
    public Service(IHostApplicationLifetime applicationLifetime)
    {
        _applicationLifetime = applicationLifetime;
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        ...

        _applicationLifetime.StopApplication();
        return Task.CompletedTask;
    }

    ...
}