tiempo de inicio del servicio de Windows

¿Hay alguna manera de establecer un valor diferente para el tiempo de espera de inicio del servicio por servicio? Puedo cambiarlo usando la clave de registro ServicesPipeTimeout, pero es por máquina ( http://support.microsoft.com/kb/824344 ).

Por el momento, lo único en lo que pensaba era en hacer todas las acciones de inicio que consumían mucho tiempo en un hilo diferente.

Es una buena práctica terminar de comenzar su servicio lo más rápido posible. Por lo tanto, durante el estado de inicio , haga solo lo que necesita para reconocer que se inició correctamente; y haz el rest más tarde. Si el inicio es un proceso largo, use SetServiceStatus periódicamente para informar al Administrador de control de servicios que aún no ha finalizado, para que no caduque su servicio.

Estoy de acuerdo con Romulo en terminar de comenzar su servicio lo más pronto posible. Sin embargo, si necesita tiempo y está utilizando .NET Framework 2.0 o posterior, puede considerar el método ServiceBase.RequestAdditionalTime ().

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.requestadditionaltime.aspx

protected override void OnStart() { this.RequestAdditionalTime(10000); // do your stuff } 

Simplemente haga cosas intensas en tiempo en otro hilo

  protected override void OnStart(string[] args) { var task = new Task(() => { // Do stuff }); base.OnStart(args); task.Start(); } 

También tuve que lidiar con un servicio que puede tomar unos segundos / minutos para tener un buen comienzo. Cuando se inicia el servicio, intenta conectarse a un servidor SQL. Sin embargo, cuando se reinició todo el servidor, mi servicio comenzaba ANTES de SQL Server. (Sé de la dependencia del Servicio pero no se aplica a mi situación por un motivo en particular …). Traté de hacer un bucle intentando 10 veces conectarme a SQL Server, pero Windows estaba matando mi servicio antes del segundo bash, debido al tiempo de espera.

Mi solución : agregué un temporizador en “onStart ()” de mi servicio. Luego, el método “onTick ()” del servicio intentaba 10 veces conectarse al Servidor SQL (con una espera de 30 en él). No más tiempo de espera al inicio.

Así que básicamente,

  • Mi servicio comienza en 5 segundos.
  • Se inicia un temporizador 10 segundos después de que se inicia el servicio.
  • El temporizador intenta 10 veces [esperar 30 segundos cada vez] para conectarse al servidor SQL.
  • Si tiene éxito, el temporizador se desactivará, si no (después de 10 bashs), detengo el servicio.

Tenga en cuenta la forma más elegante de resolver el problema, pero tal vez una parte de mi solución pueda ayudar a alguien en la misma situación que yo,

    Intereting Posts