Я пишу сервис windows, который создает для запуска пару задач Parallels: Ниже приведен пример кода:
private static void TaskMethod1()
{
//I am doing a bunch of operations here, all of them can be replaced with a sleep for 25 minutes
}
private static async Task TaskMethod()
{
while(runningService)
{
// Thi will create more than one task in parallel to run and each task can take upto 30 minutes to finish
Task.Run(() => TaskMethod1(arg1);
}
}
internal static void Start()
{
runningService = true;
Task1 = Task.Run(() => TaskMethod());
}
internal static void Stop()
{
runningService = false;
Task1.Wait();
}
Теперь, когда я остановлю службу, она не создаст никакой новой задач, потому что runningService = false
, но windows служба не ждет 30 минут для завершения уже запущенных задач.
Теперь я прочитал, что для службы есть тайм-аут x минут, и его можно изменить с помощью реестра Настройки, мне просто интересно, есть ли такой способ, что служба будет ждать завершения каждой задачи вместо жесткого кодирования в это время через реестр.