Pergunta

Minha caixa de dev é uma máquina Windows 7 (x64). Eu tenho algum código (C#, .NET 2.0) que, em determinadas circunstâncias, verifica se um serviço está em execução e o interrompe.

ServiceController matchedService = //My Service!

//If statements and such

matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);

Agora, eu posso verificar o MyService está de fato instalado e em execução. Posso dizer que estou executando o Visual Studio 2008 como administrador enquanto depura. Eu também posso verificar isso depois de alguns Se Declarações, acabo na parte .Stop () e .WaitforStatus () da programação. Eu sei que, se pisar na chamada .Stop (), o próprio serviço continua correndo (olhando para ele Serviços, embora me ocorra, talvez eu deva pegar uma ferramenta melhor para isso. Tenho certeza de que existem algumas ferramentas de sysinternals que podem me fornecer mais informações). Enquanto eu passo pela chamada .waitforstatus (), basicamente acabo esperando pelo status parado. . . para todo sempre. Bem, eu deixei ficar lá por mais de 15 minutos ontem (duas vezes) e nada acontece. Nunca chegamos à próxima linha de código. Parece exatamente a estranheza do espaço de Bowie (você sabe a parte de que estou falando).

Há uma boa coisa sobre o MyService que você não sabe nada. Coisas que você não entenderia. Coisas que você não poderia. . . Deixe -me declarar isso claramente. Nenhum serviço depende do MyService e MyService depende de nenhum outro serviço. Termo aditivo MyotherService e SonofMyService parecem se comportar corretamente neste momento do código. Todos esses serviços compartilham as mesmas características (são nossos próprios serviços que traçamos em um laboratório secreto e não temos dependências). É possível que haja algo errado com a instalação do MyService ou algo assim?

Eu sei que se eu parar de depurar neste momento, o MyService ainda está listado como executando Serviços (Mesmo depois de acertar a atualização). Se eu tentar reiniciá -lo (ou executar meu aplicativo novamente e chegar a esse ponto), recebo uma mensagem sobre não poder aceitar mensagens de controle. Depois disso, o serviço aparece como parado e eu posso iniciá -lo normalmente.

Por que o serviço não está sendo interrompido? Isso é uma peculiaridade do Win 7? Uma falha da minha parte para entender o serviceController ou ganhar serviços em geral?

Foi útil?

Solução

Após uma investigação mais aprofundada, acredito que isso é um problema com o próprio serviço.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top