c# - 将 .Netcore IHostedService 作为控制台应用程序关闭
问题描述
我在 .netcore 2.2 中构建了通用主机(IHostedService)。我将 HostBuilder 作为 RunConsoleAsync() 运行。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;
}
...
}
推荐阅读
- r - 如何在 R studio 的分类多个 ggboxplots 中纠正重叠的 x 轴标签
- asp.net-core - 关于如何绕过不支持 IIS 的 Windows 11 ARM 的想法
- c++ - 如何为成员函数声明一个概念并在友元函数中使用
- python - 如何在不使用 shell=True 的情况下通过 Python subprocess.check_output 调用 FFmpeg 时捕获输出?
- python - 语法错误代码之前有效,但现在无效
- python - 按组和虚拟代码分类变量透视长格式分类数据
- javascript - 在 Rollup 中,创建 ESM 模块,除了 Flow 之外没有 babel 转译
- css - 触发移动设备/中屏元素“悬停”滚动效果
- node.js - XRPL 签名交易,卡在从密码中获取 xrpl 钱包
- react-native - Onclick按钮,状态不会改变