У меня есть служба Windows, где я получаю HTTP-запросы и запускаю процесс, который может занять больше часа. Мне нужно получить уведомление в главной службе, когда процесс завершится. И когда служба закончилась, мне нужно завершить все дочерние процессы. Я понимаю, что если я буду ждать, то он будет зависать на службе Windows до тех пор, пока процесс не будет завершен, и дальнейшие HTTP-запросы не будут рассмотрены? На данный момент я выполняю следующие действия, но это неправильный подход.Понимание WaitForSingleObject и WaitForMultipleObject
if(CreateProcess(TEXT(EXEPATH),
procArguments,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)
)
{
processHandles[processCount] = pi.hProcess;
processStreams[processCount] = eventId.c_str();
processCount++;
}
На остановке службы я делаю это
for(int index=0;index<10;index++){
g_pAppLog->Log("Stop Process for processStreams[%d] %s\n",index,processStreams[index].c_str());
int terminationResult = TerminateProcess(processHandles[index],1);
}