Supongo que todas las ejecuciones cesan inmediatamente y el extremo que llama obtiene un tiempo de espera. ¿Qué sucede exactamente cuando detiene un servicio y cuánto control tiene sobre él?¿Qué sucede si detengo mi servicio de Windows mientras procesa una solicitud de WCF?
Respuesta
Cuando el Administrador de control de servicios le dice a su servicio que se detenga, .Net ServiceBase establece el estado en SERVICE_STOP_PENDING y llama al método OnStop de su servicio. Lo que hagas con esa notificación depende de ti. Idealmente, tendrá algún mecanismo, como el uso de un CancellationToken, para notificar a cualquiera de sus hilos que actualmente funcionan que deben cerrarlo y salir lo más rápido posible. En su caso, puede implicar el cierre de su ServiceHost. Su método OnStop debe esperar hasta que sepa que se ha logrado (al unirse a los hilos, por ejemplo) antes de volver. Hay formas de notificar al Administrador de control de servicios que necesita más tiempo, o simplemente para informarle que recibió la notificación y que está trabajando activamente para detenerlo (SERVICE_STATUS dwcheckpoint).
Si acaba de regresar inmediatamente de su OnStop (o no se moleste en implementarlo), entonces creo que los hilos de su servicio serán terminados a la fuerza rápidamente. No lo sé con certeza, porque nunca lo intenté. Siempre implemento OnStop, y solo regreso cuando todo está limpio. Si implementa OnStop, pero tarda mucho tiempo en regresar sin que el administrador de control de servicios sepa que está trabajando en ello, esperará un poco (20 segundos para detener el servicio ... es una configuración de registro), y luego termina tus hilos.
Lo correcto es escribir su servicio para que comience rápidamente, se detenga rápidamente, se pause y continúe rápidamente, etc. Como puede ver en la descripción anterior, exactamente lo que sucede en su caso, depende completamente de cómo su servicio fue implementado. Solo usted tiene la información para "saber con certeza".
- 1. WCF Servicio de Windows TimeOut
- 2. ¿Por qué mi mensaje se procesa fuera de servicio en un solo canal WCF TCP (con ConcurrencyMode.Reentrant)?
- 3. ¿Por qué mi cliente C#, POSTING para mi servicio WCF REST, devuelve (400) Solicitud incorrecta?
- 4. ¿Qué sucede si configuro HttpGetEnabled = false
- 5. ¿Qué sucede si tengo dos asignaciones de servlet en web.xml que coinciden con una solicitud?
- 6. ¿Qué sucede si un servicio se inicia varias veces?
- 7. ¿Cómo detengo una aplicación de servicio de Windows de un hilo?
- 8. ¿Por qué mi servicio WCF devuelve una FaultException, tiempo de espera después de 10 llamadas?
- 9. Qué sucede en IIS/C# cuando se cancela una solicitud
- 10. ¿Qué sucede en una rutina de servicio de interrupción?
- 11. Agregar soporte IoC a mi servicio WCF alojado en un servicio de Windows (Autofac)
- 12. ¿Cómo realizar una llamada asincrónica a mi servicio WCF?
- 13. WCF Seguridad en un servicio de Windows
- 14. ¿Qué sucede si saltas de una instrucción Lock()?
- 15. ¿Por qué el servicio de datos WCF funciona mejor mientras se está ejecutando Fiddler?
- 16. ¿Por qué obtengo ActionNotSupportedException para mi cliente/servicio WCF?
- 17. WCF: solicitud de manejo de varios clientes
- 18. Alojamiento del servicio WCF en el servicio de Windows
- 19. ¿Qué es el archivo .psess en mi servicio de Windows?
- 20. Habilitar SSL para mi servicio WCF
- 21. ¿Por qué mi servicio WCF no está cargando mi configuración de enlace?
- 22. ¿Qué sucede si deseo implementar una consulta complicada en REST
- 23. ¿Qué sucede si necesito una identificación de autoincrement muy grande?
- 24. ¿Qué sucede si matas una consulta alternativa de larga ejecución?
- 25. Haga algo cuando mi servicio WCF comenzó
- 26. ¿Qué sucede si lanzo ReleaseMutex() dos veces?
- 27. ¿Qué sucede si un proceso secundario no cierra la tubería de escritura, mientras lee?
- 28. Cómo registrar la solicitud sin procesar en el servicio WCF
- 29. Si detengo una instancia de Amazon EC2, ¿está esto guardado?
- 30. Servicio WCF bloqueado por el Firewall de Windows
¿Qué servicio de Windows? ¿Es algo que escribiste? Esto depende completamente de cómo el servicio maneje la solicitud de cierre. Podría escribirse para completar su trabajo actual o no. – James
¿Has probado esto tú mismo? ¿Cuál fue el resultado? – Bernard
Escribiría la respuesta correcta ... pero amigo ... PRUEBE usted mismo! Solo lleva unos segundos probarlo usted mismo. – Eiver