我有一个 Windows 服务,我正在接收 http 请求并为其启动一个可能运行一个多小时的进程。当一个进程结束时,我需要在主服务中得到通知。当服务结束时,我需要终止所有子进程。我知道,如果我执行 waitforsingleobject ,它将挂在 Windows 服务上,直到该过程完成,并且不会接受进一步的 http 请求?我现在正在做以下工作,但方法不正确。
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);
}