Я создал 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();
}
}
Настройка служб при запуске:
..
services.AddSingleton<IWcBackgroundService, WcBackgroundService>();
..
Настройка при запуске:
var wcBackgroundService = app.ApplicationServices.GetService<IWcBackgroundService>();
wcBackgroundService.StartAsync(new CancellationToken()).Wait();