Existe um bug nesse código devido a natureza assíncrona do comando sc
, onde o sc stop
faz a requisição para a mudança do estado e retorna imediatamente como bem-sucedido ainda com o estado transitório intermediário STOP_PENDING
, o que leva a falha da próxima instrução com o comando com o sc start
em cima de um serviço que ainda está em execução.
Para melhor ilustração desse cenário seria necessário utilizar o comando mais antigo net
que possui natureza síncrona, uma vez que após a requisição de transição de estado verifica periodicamente durante 30s se houve a transição até o estado final esperado, se não retorna como erro.
Para a consulta deve-se manter o uso do sc
, pois o net
não possui essas funções.