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