void UnixSignalHandler::waitforstop(RefCountedPtr<iSvrService> &localService) { //This function is a blocking call until the service has stopped while (!localService->isStopped()) { ThdManager::Sleep( 1000 ); } }
void CService::OnStop() { RefCountedPtr<iSvrService> localService = _theService; localService->stop(); DWORD waitHint = 1; while ( true ) { SetStatus( SERVICE_STOP_PENDING, waitHint++, 2000 ); if ( !localService->isStopped() ) { ThdManager::Sleep( 1000 ); } else { break; } } }