1

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);                  

        }
4

3 に答える 3

0

メイン サービスでは、それを行うスレッドを作成して、メイン スレッドを引き続き実行できるようにする必要があります。このスレッドでは、WaitforMultipleObjects を使用して、すべての子プロセスが終了するまで待機する必要があります。コードが実行されます。

詳細については、MSDN を確認してください

于 2013-09-27T15:09:45.503 に答える