Pregunta

Mi caja de dev es una máquina de Windows 7 (x64). Tengo algo de código (C #, .NET 2.0) que, en ciertas circunstancias, comprueba si un servicio se está ejecutando y luego se detiene.

ServiceController matchedService = //My Service!

//If statements and such

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

Ahora, puede verificar MyService está de hecho instalada y funcionando. Puedo decir que estoy ejecutando Visual Studio 2008 como administrador durante la depuración. También puedo comprobar que después de un par de declaraciones, que terminan en la parte .Stop () y .WaitForStatus () de la programación. Yo sé que si pasar por encima de la llamada .Stop (), el servicio en sí sólo sigue funcionando (mirando en Servicios , aunque se me ocurre tal vez debería tomar una mejor herramienta para esto. Yo 'm seguro de que hay alguna herramienta sysinternals que me podría dar más información). Como me paso más de la llamada .WaitForStatus (), que básicamente termino esperando el estado parado. . . Siempre. Bueno, dejo reposar allí durante más de 15 minutos de ayer (dos veces) y no pasa nada. Nunca lo hacemos a la siguiente línea de código. Se siente exactamente como Space Oddity de Bowie (ya se sabe la parte que estoy hablando).

Hay una lotta cosas sobre MyService que no conoce nada acerca. Cosas que no lo entendería. Cosas que no podía. . . permítanme decir esto claramente. No hay servicios dependen de MyService y MyService depende de ningún otro servicio. Adición MyOtherService y SonOfMyService tanto parecen comportarse correctamente en este punto en el código. Todos estos servicios comparten las mismas características (son nuestros propios servicios que eclosionaron en un laboratorio secreto y no tienen dependencias). ¿Es posible que algo anda mal con el MyService instalar o algo?

Yo sé que si dejo de depuración en este punto, MyService sigue apareciendo como correr en Servicios (incluso después de golpear actualización). Si intento reiniciarlo a continuación (o paso la aplicación de nuevo y llegar a este punto), aparece un mensaje acerca de no ser capaz de aceptar mensajes de control. Después de eso, los programas de servicios como detuve y me puedo iniciarlo normalmente.

¿Por qué no se detiene el servicio? Es este un capricho de Win 7? Un defecto de mi parte para entender la ServiceController, o Win Servicios en general?

¿Fue útil?

Solución

Después de investigaciones adicionales, creo que esto es un problema con el servicio en sí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top