В наших сервисах. NET Framework мы всегда запрашиваем дополнительное время у менеджера управления службами, когда наши службы начинают давать им больше времени для запуска, чем по умолчанию (30 секунд?), Прежде чем сообщить, что они еще не запущены.
Мы делаем это с помощью метода RequestAdditionalTime класса ServiceBase, например,
protected override void OnStart(string[] args)
{
RequestAdditionalTime(120 * 1000);
// Do stuff.
}
Мы делаем это, потому что мы проверяем некоторые вещи, такие как совместимость версий с базой данных SQL, запущенной в SQL Сервер перед запуском любого другого потока и т. Д. c на случай, если служба не запустится. Мы обнаружили, что SQL Сервер не всегда работал вовремя, чтобы служба подключалась к нему при запуске, поэтому мы просим, чтобы диспетчер управления службами предоставил службе больше времени для запуска, чтобы мы могли повторить подключение к базе данных.
Я хочу сделать то же самое с нашими службами. NET core 3, но не могу найти эквивалентного способа запросить дополнительное время у менеджера управления службами. Так что, если у нас есть BackgroundService, который мы настроили с помощью UseWindowsService () в компоновщике хоста, как я могу запросить больше времени, как у нас. NET Framework?
public class Worker : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
CheckDatabaseCompatibility();
while (!stoppingToken.IsCancellationRequested)
{
// Do stuff.
}
}
}
Мы использование. NET Core 3.1.1 и запуск exe как службы в Windows.