FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
El servicio delphinero se cierra
He hecho un servicio (mejor dicho, estoy haciendo) des de Delphi, pero nada mas lo ejecuto se cierra, porqué pasa esto? Alguien ha probado de hacer algun servicio?
Espero impaciente respuesta, muchas gracias. |
#2
|
||||
|
||||
Hola,
No sé si voy a saber explicarlo bien, te pido disculpas si ves que no es así, pero, vamos allá. Lo que ocurre es que un Servicio de Windows no tiene GUI, no espera, por tanto la respuesta de ningún usuario, salvo ciertos eventos que el usuario puede "mandarle" al Servicio desde el programa que proporciona Microsoft, por ejemplo. El usuario podrá desde ese programa poner en marcha un Servicio, pausarlo, detenerlo, reanudarlo,... pero el Servicio no cuenta con interfaz alguna que mostrar al usuario, y tiene que estar haciendo "algo", realizando un determinado proceso, continuamente, hasta que se le mande detenerse, por ejemplo. Yo no es que entienda mucho de Servicios de Windows: nunca hize ninguno si no fue copiarlo de algún libro, pero, precisamente, en los ejemplos que he podido ver los Servicios se "limitaban", por ejemplo, a estar a la escucha de un determinado puerto del ordenador. Estar a la escucha dentro de un bucle "While" que se ejecutaba (su condición de entrada es "true") siempre, hasta que un determinado suceso indicaba que había que dar por terminado el bucle,... y por lo tanto la ejecución del Servicio de Windows. Es decir, por terminar, la ejecución del Servicio de Windows comienza en su evento "OnStart", y a partir de ahí habrá de realizar un determinado proceso que ha de alargarse lo que se alarge la vida del propio Servicio de Windows: no es necesario que esté constantemente en ejecución, a no ser, claroe está, que esto sea necesario. |
#3
|
|||
|
|||
Mmmm, entiendo...
Mi servicio tiene que tener abierto el servidor IdFTPServer, como hago que se quede el servicio activo? |
#4
|
||||
|
||||
Hola,
Cita:
|
#5
|
|||
|
|||
El servicio tiene que ser un servidor FTP, el servicio tiene que estar activo siempre, hasta que el usuario decida cerrarlo.
|
#6
|
|||
|
|||
Cita:
Código:
procedure TSvcMio.ServiceStart(Sender: TService; var Started: Boolean); begin CargaConfiguracion; Started := True; end; procedure TSvcMio.ServiceStop(Sender: TService; var Stopped: Boolean); begin FinalizaServicio; Stopped := True; end; procedure TSvcMio.ServiceExecute(Sender: TService); begin AddLog('Servicio iniciado'); while not Terminated do ServiceThread.ProcessRequests(True); AddLog('Servicio detenido' + #13#10); end; |
|
|
|