我创建了WcBackgroundService(继承自BackgroundService),并将其注入到OrdersController中。当前端API发送重启端点的请求时,我将从我的工作程序中执行Restart方法。
如上所述,当前解决方案不仅重新启动服务,而且还创建了我的后台服务的新实例并启动它。
以下是我的代码
WcBackgroundService
public async Task Restart()
{
await StopAsync(new CancellationToken());
await StartAsync(new CancellationToken());
}
protected override async Task ExecuteAsync(CancellationToken cancellationToken)
{
cancellationToken.Register(() =>
{
_logger.Debug($"Service {_serviceType} is stopping.");
});
while (!cancellationToken.IsCancellationRequested)
{
await DoWork();
}
}
在启动文件中的 ConfigureServices 方法:
..
services.AddSingleton<IWcBackgroundService, WcBackgroundService>();
..
启动时配置:
var wcBackgroundService = app.ApplicationServices.GetService<IWcBackgroundService>();
wcBackgroundService.StartAsync(new CancellationToken()).Wait();