Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dudas de un servicio (https://www.clubdelphi.com/foros/showthread.php?t=95903)

juggern 11-10-2022 09:54:38

Dudas de un servicio
 
Buenos días chicos,

Tengo un par de dudas que seguro que son muy tontas.
Nunca he creado un servicio con Delphi y estoy investigando para crear uno.
Es un servicio sencillo que ejecutará una aplicación.
Aquí vienen mis dudas:

1 - Se puede hacer que yo ponga al instalar el servicio el intervalo de ejecución? Porque veo que al hacer el servicio lo pongo en un timer, pero y si ese servicio yo quiero que se ejecute cada X minutos distintos dependiendo del cliente? Es decir, instalo el servicio en un cliente y quiero que se lance cada 10 minutos, pero luego lo instalo en otro cliente y en este quiero que se lance cada 20 minutos...

2 - Al ejecutarse la aplicación mediante el servicio, como se sabe si se ha ejecutado correctamente o si ha dado error?

Gracias!

Neftali [Germán.Estévez] 11-10-2022 12:24:36

Cita:

Empezado por juggern (Mensaje 548655)
1 - Se puede hacer que yo ponga al instalar el servicio el intervalo de ejecución? Porque veo que al hacer el servicio lo pongo en un timer, pero y si ese servicio yo quiero que se ejecute cada X minutos distintos dependiendo del cliente? Es decir, instalo el servicio en un cliente y quiero que se lance cada 10 minutos, pero luego lo instalo en otro cliente y en este quiero que se lance cada 20 minutos...

Yo utilizaría un fichero de configuración (INI) para definir el intervalo de tiempo.
Y desde el servicio usar un valor por defecto y si es necesario cargar otro diferente desde el fichero de configuración.


Cita:

Empezado por juggern (Mensaje 548655)
2 - Al ejecutarse la aplicación mediante el servicio, como se sabe si se ha ejecutado correctamente o si ha dado error?

No se si te refieres a la propia ejecución de la aplicación (CASO1) o a posibles errores que pueda devolver la aplicación (CASO2) una vez que se se ejecute.

CASO1) Para esto revisa los parámetros de retorno de ShellExecute o mejor de ShellExecuteEx (que además permite GetLastError).

CASO2) Esto no vas a poder capturarlo desde el servicio o no ser que lo hagas utilizando ficheros de texto (LOG) o similar (para comunicar ambos procesos).

juggern 12-10-2022 10:06:30

Genial!

Muchas gracias Neftali

juanelo 12-10-2022 23:49:30

2 Archivos Adjunto(s)
Archivo Adjunto 4029
Archivo Adjunto 4030
Estas opciones uso en un servicio que tengo y las almaceno en un ini.
Saludos

juggern 13-10-2022 13:39:29

Y otra cosa, que ventajas tiene hacer un servicio que lance el programa en lugar de lanzarlo con una tarea programada cada X tiempo?

juanelo 13-10-2022 19:20:51

La verdad es que si el programa que se va a ejecutar no es de tu autoria, o bien las funciones que se programan en su ejecucion son ajenas tu sistema, no le veo mucho caso el hacer un servicio de windows para simple y sencillamente ejecutar dicho programa cada N unidades de tiempo.
Por otro lado, si la programacion (funcionalidad) de la(s) tarea(s) estan bajo tu desarrollo, ahi si tiene todo el sentido del mundo, ya que tu sabes que hacer y que no hacer en el servicio.
Saludos


La franja horaria es GMT +2. Ahora son las 17:14:14.

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