我想在 ASPNET Core 中实现一个可以按需停止和启动的重复(定时)IHostedService 实例。我的理解是 IHostedService(s) 在应用程序启动时由框架启动。但是,我希望能够“手动”启动/停止服务,也许可以通过 UI 使用开/关切换。理想情况下,“关闭”状态将处理当前正在运行的服务,然后“开启”状态将创建一个新实例。我在这里阅读了 MS 文档:https : //docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services? view = aspnetcore- 2.1。我最初的想法是获取正在运行的服务的实例,然后调用公共StopAsync(CancellationToken token)方法。但是,当涉及到我应该传递哪个令牌时,我有点困惑,对于该StartAsync(CancellationToken cancellationToken)方法也可以这样说。关于如何做到这一点的任何想法,或者甚至是可取的?我的方法是否与 ASPNET Core 中托管服务的预期设计背道而驰?编辑 7.27.2018因此,经过更多研究(也就是实际阅读文档 :D),托管服务的 StartAsync/StopAsync 方法确实意味着与应用程序的生命周期一致。注册的 IHostedServices 似乎没有添加到 DI 容器中以注入其他类。因此,我认为我最初的想法行不通。现在,我使用IOptions<T>可以在运行时更新的配置依赖项 ( )注册了我的服务。当托管服务正在处理时,它将检查配置以查看它是否应该继续,否则它将等待(而不是停止或处置托管服务)。我可能很快会将此标记为我的答案,除非我听到其他一些想法。
2 回答
- 2 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消