アプリケーション内のサービスを制御しようとしています。StartService(MSDN)を介してサービスを開始すると、サービスの開始に約10秒かかりますが、StartServiceを呼び出した後、すぐにメインアプリケーションに制御が戻ります。
ただし、ControlService(MSDN)を介してサービスを停止する場合(AFAIKにはStopServiceはありません)、サービスが停止するまで、約10秒かかるメインアプリケーションを完全にブロックします。
Start: StartServiceW( handle, 0, NULL)
Stop: ControlService( handle, SERVICE_CONTROL_STOP, status )
Windowsサービスを非ブロッキング/非同期で停止する方法はありますか?