c# - 如何以编程方式停止 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();
}
它不起作用。我怎样才能正确地阻止它?
解决方案
RunConsoleAsync
接受一个CancellationToken
. 您可以创建一个CancellationTokenSource
在给定毫秒数后发出取消信号的信号:
var cancellationTokenSource = new CancellationTokenSource(5000);
return hostBuilder.RunConsoleAsync(cancellationTokenSource.Token);
这样,应用程序在大约五秒钟后关闭。
推荐阅读
- python - 是否有更 Pythonic 的方式来嵌套条件语句以填充 pandas df 中的新列?
- c - 删除所有节点链表
- javascript - 具有背景滤镜的元素的平均颜色?html、css、jquery
- typescript - 打字稿:getSymbolAtLocation
- android - Firebase - 测试实验室 - 在物理设备上上传文件
- python - 使用 PIL 从字节打开图像后失真
- c++ - CLion 对 C++ 概念的支持
- python - botocore.exceptions.SSLError:Windows 上的 SSL 验证失败
- accessibility-insights - 有没有办法关闭特定 xaml 元素的讲述人但仍提供自动化名称?
- python - 如果消息是回复,机器人应该获取用户的 id