我已经在.netcore 2.2中构建了通用主机(IHostedService)。我正在以RunConsoleAsync()的身份运行HostBuilder。 RunConsoleAync()将等待Ctrl + C关闭应用程序。 我想在StartAsync()进程完成后立即关闭控制台应用程序,而不是用户必须按ctrl + c。
我尝试使用新的CancellationToken(true)调用StopAsync(),但这无济于事。
我将其开发为IHostedService,因为该应用程序将部署在多种平台上。
答案 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;
}
...
}