关闭.Netcore IHostedService作为控制台应用程序

时间:2019-04-09 09:50:02

标签: c# .net-core

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

我尝试使用新的CancellationToken(true)调用StopAsync(),但这无济于事。

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

1 个答案:

答案 0 :(得分:0)

我假设您已经有IHostedService实现。您需要做的就是将IApplicationLifetime注入并使用它来停止应用程序,如下所示:

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

    public Task StartAsync(CancellationToken cancellationToken)
    {
        ...

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

    ...
}