Интерфейс IHostedService
(и базовая реализация BackgroundService
) имеют переопределяемые методы StartAsync()
и StopAsync()
. В нашей фоновой службе у нас есть:
public override Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogWarning("Background service stopping");
return Task.CompletedTask;
}
. Вы можете использовать это для запуска того, что вы хотите каким-либо образом уведомить, когда ваш HostedService
запускается или останавливается.
Если вам нужно иметь способ опроса службы, возможно, вы могли бы внедрить синглтон, который имеет простой статус внутри него, который устанавливается этими методами. Затем контроллер проверки работоспособности на вашем API / веб-сайте также может ввести это и прочитать состояние синглтона. Примерно так:
public interface IHostedServiceStatus
{
bool IsHostedServiceRunning { get; set; }
}
public class HostedServiceStatus : IHostedServiceStatus
{
public bool IsHostedServiceRunning { get; set; }
}
Установите это как одиночный, введите в ваш HostedService
и установите IsHostedServiceRunning
для методов StartAsync()
и StopAsync()
соответственно. Затем также введите в свой контроллер проверки здоровья и прочитайте IsHostedServiceRunning
.