Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-12-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
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.
__________________
l2prog.co.nr
Responder Con Cita
  #2  
Antiguo 18-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 18-12-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
Mmmm, entiendo...
Mi servicio tiene que tener abierto el servidor IdFTPServer, como hago que se quede el servicio activo?
__________________
l2prog.co.nr
Responder Con Cita
  #4  
Antiguo 19-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Gunman
Mi servicio tiene que tener abierto el servidor IdFTPServer, como hago que se quede el servicio activo?
Siento no poder ayudarte: no he utilizado nunca el componente que dices. No sé cómo realiza su tarea. ¿Qué significa que el "servicio tiene que tener abierto el servidor IdFTPServer"? ¿Acaso que este tiene que estar pendiente, a la escucha, en un determinado puerto del ordenador? No sé si por ahí van los tiros. Lamento no poder decirte otra cosa, al menos de momento.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 19-12-2005
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
El servicio tiene que ser un servidor FTP, el servicio tiene que estar activo siempre, hasta que el usuario decida cerrarlo.
__________________
l2prog.co.nr
Responder Con Cita
  #6  
Antiguo 20-12-2005
[pepon386] pepon386 is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Valencia
Posts: 68
Poder: 20
pepon386 Va por buen camino
Cita:
Empezado por [Gunman]
El servicio tiene que ser un servidor FTP, el servicio tiene que estar activo siempre, hasta que el usuario decida cerrarlo.
El problema que tienes es debido a que, en el Execute del servicio tienes que controlar toda la vida del proceso, en tu caso, que se abra el servidor FTP, que esté a la escucha y que cuando el servidor se prepare para apagarse o el usuario detenga el servicio que finalice. Te pongo un ejemplo:

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;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:21:07.


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
Copyright 1996-2007 Club Delphi