http 要求を受信し、1 時間以上実行される可能性のあるプロセスを起動する Windows サービスがあります。プロセスが終了したときにメイン サービスで通知を受け取る必要があります。また、サービスが終了したら、すべての子プロセスを終了する必要があります。私が 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);
}