Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 10-07-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
⚠️ PROBLEMA PRINCIPAL: Uso de TTimer en un servicio de Windows
Los servicios NO tienen una interfaz de usuario ni un loop de mensajes visual (como Application.ProcessMessages), por lo que TTimer no funciona como esperas. El TTimer depende del mensaje WM_TIMER, que no se procesa en un servicio como sí en una app VCL normal.

✅ SOLUCIÓN 1: Usa un hilo (TThread) en lugar de TTimer
Así sí puedes ejecutar tareas cada X segundos sin bloquear el servicio.

🧠 Alternativa funcional:

Código Delphi [-]
type
  TWorkerThread = class(TThread)
  protected
    procedure Execute; override;
  end;

procedure TWorkerThread.Execute;
begin
  while not Terminated do
  begin
    TService1(Service1).WriteLog('Thread running...');
    Sleep(1000); // Espera 1 segundo
  end;
end;


Y en ServiceStart:

Código Delphi [-]
var
  thread: TWorkerThread;
begin
  WriteLog('ServiceStart');
  thread := TWorkerThread.Create(False);
  Started := True;
end;

Y no olvides terminarlo en ServiceStop si lo mantienes como miembro de la clase.

⚠️ OTRO PROBLEMA: Beep
No uses Beep en servicios. No está permitido en contexto de servicio (no hay usuario con escritorio para oírlo), y puede incluso tirar errores. Quita todas las llamadas a Beep.

⚠️ OTRO DETALLE: Acceso a ruta de usuario desde un servicio
Estás escribiendo el log en:

Código Delphi [-]
C:\Users\Papá\Desktop\...

⚠️ Los servicios se ejecutan como SYSTEM por defecto, no como el usuario que tú eres. Esto significa que esa ruta probablemente no exista o no tenga permisos para escribir.

✅ Solución:
Cambia la ruta del log a una más accesible, como:

Código Delphi [-]
cFile := 'C:\ServiceLogs\Service_Test.txt';

Y asegúrate de que exista la carpeta y tenga permisos.

Última edición por navbuoy fecha: 10-07-2025 a las 22:22:32.
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TService sancarlos API de Windows 4 12-11-2008 10:14:25
TService y TForm Softweb API de Windows 5 20-10-2008 17:41:01
TService, IB, FB OSKR C++ Builder 0 27-04-2005 11:51:11
Imprimir desde un TService gynch Varios 2 02-04-2004 19:35:23
Imprimir desde un TService gynch Impresión 0 24-03-2004 14:12:16


La franja horaria es GMT +2. Ahora son las 09:26:56.


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