Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ¿Lentitud en arranque de servicio? (https://www.clubdelphi.com/foros/showthread.php?t=70816)

Angel Vicente 12-11-2010 09:28:44

¿Lentitud en arranque de servicio?
 
Hola...

Tengo una instalacion con Fb 2.5 arrancandose como servicio, un programa que utiliza la base de datos, que se arranca desde el grupo Inicio (todo ello en XP), y tengo modificado el registro para que se registre un usuario por defecto.

Funciona todo, pero hay falta de sincronia: parece que arranca antes el programa que el servicio de la base de datos, con lo que el primero falla y aborta (no ejecuta), si espero unos segundos mas, al arranque de la base de datos, puedo arrancar el programa sin ningun problema.

Mi pregunta es si existe alguna forma de asegurar que la base de datos esta arrancada antes de ejecutar el programa, alguna forma de ordenar el arranque de los servicios y de los programas, o de establecer algun tipo de dependencia en el programa del grupo Inicio o algo asi. En el msconfig no he visto como hacerlo.

Saludos y gracias de antemano

Axel_Tech 12-11-2010 11:53:21

Se me ocurre una forma (aunque seguro que no es la más elegante): investigar cuántos segundos transcurren más o menos desde que inicia Windows hasta que inicia la base de datos y al principio de tu aplicación hacer un
Código Delphi [-]
Sleep(n)
donde n será el número de milisegundos que deberá esperar para hacer la conexión a la base de datos.

Angel Vicente 12-11-2010 14:11:13

Tratare de hacerlo asi, porque no veo como ordenar los arranques, ni como comprobar si un servicio esta arrancado

Gracias

rastafarey 19-11-2010 03:42:56

Resp
 
Si notas algunos prohrams que dependen de servicios se ejecutan de la siguiente manera por ejemplo kavsperky se llama asi
C:\Archivos de programa\Kaspersky Lab\avp.exe /waitservice

Yo tengo un progrma que hace lo mismo y cuando lo llamo desd el run de windows osea cuando arranca el sistema operativo. si veo que esta el parametro realizo un ciclo repeat durente un tiempo o hasta que el serviocioeste levantado.

Código Delphi [-]
Function VerficicarServicio(Srv: String): Boolean;
Begin
   //cooidgo que verifica si el servicio esta levantado
End;

Procedure xxxxxxx;
Var
   ServicioCorriendo: Boolean;
   TiempoAgotado: Boolean;
Begin
repeat
   ServicioCorriendo := VerficicarServicio('xxxxx');
   //Codigo para vefiicar el tiempo maximo 
Until ServicioCorriendo or TiempoAgotado;
End;

celades1 19-11-2010 07:04:01

Hola

Vete a Panel de control
Herramientas administrativas
Servicios
Firebird server
doble clic y cambiale su forma de abrir ponlo en automatico si es que esta
en manual (que es su defecto) ya que es el firebird guardian el que solo esta
en automatico.

Saludos


La franja horaria es GMT +2. Ahora son las 12:49:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi