我想在 ASPNET Core 中實現(xiàn)一個可以按需停止和啟動的重復(fù)(定時)IHostedService 實例。我的理解是 IHostedService(s) 在應(yīng)用程序啟動時由框架啟動。但是,我希望能夠“手動”啟動/停止服務(wù),也許可以通過 UI 使用開/關(guān)切換。理想情況下,“關(guān)閉”狀態(tài)將處理當(dāng)前正在運行的服務(wù),然后“開啟”狀態(tài)將創(chuàng)建一個新實例。我在這里閱讀了 MS 文檔:https : //docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services? view = aspnetcore- 2.1。我最初的想法是獲取正在運行的服務(wù)的實例,然后調(diào)用公共StopAsync(CancellationToken token)方法。但是,當(dāng)涉及到我應(yīng)該傳遞哪個令牌時,我有點困惑,對于該StartAsync(CancellationToken cancellationToken)方法也可以這樣說。關(guān)于如何做到這一點的任何想法,或者甚至是可取的?我的方法是否與 ASPNET Core 中托管服務(wù)的預(yù)期設(shè)計背道而馳?編輯 7.27.2018因此,經(jīng)過更多研究(也就是實際閱讀文檔 :D),托管服務(wù)的 StartAsync/StopAsync 方法確實意味著與應(yīng)用程序的生命周期一致。注冊的 IHostedServices 似乎沒有添加到 DI 容器中以注入其他類。因此,我認(rèn)為我最初的想法行不通。現(xiàn)在,我使用IOptions<T>可以在運行時更新的配置依賴項 ( )注冊了我的服務(wù)。當(dāng)托管服務(wù)正在處理時,它將檢查配置以查看它是否應(yīng)該繼續(xù),否則它將等待(而不是停止或處置托管服務(wù))。我可能很快會將此標(biāo)記為我的答案,除非我聽到其他一些想法。
- 2 回答
- 0 關(guān)注
- 224 瀏覽
添加回答
舉報
0/150
提交
取消