Criando um serviço Windows Server 2008

Delphi

21/08/2012

Estou tentando criar um serviço com o Delphi para rodar no Windows Server 2008.

O objetivo do serviço é verificar algumas informações no banco de dados instalado neste servidor e enviar estas informações via WebService.

Eu tenho o sistema que faz isso criado e funcionando, no entanto ele precisa ser um serviço agora.
O que eu tentei até agora foi colocar minhas funções no OnExecute, ele chama, porém apenas uma vez.
Vi em algum lugar alguém falando pra por um looping,
while not self.terminated
no entanto també não funcionou.
O que funcionou foi algo que não é correto. Dentro do OnExecute, eu chamo uma função, que possui um looping, então ele fica executando o que eu preciso, mas creio que isto é errado. Esta função só funcionou no windows XP.

Alguém tem alguma ideia de como criar um serviço com o delphi e que este serviço fique executando 24 horas?
Daniel Capeletti

Daniel Capeletti

Curtidas 0

Respostas

Romulo Contro

Romulo Contro

21/08/2012

Olá, tenta dar uma olhada nesse link:

http://www.marcosdellantonio.net/2007/06/28/delphi-rodando-um-executavel-como-um-servico-do-windows/
GOSTEI 0
Daniel Capeletti

Daniel Capeletti

21/08/2012

Olá, tenta dar uma olhada nesse link:

http://www.marcosdellantonio.net/2007/06/28/delphi-rodando-um-executavel-como-um-servico-do-windows/



Obrigado pela resposta, mas já vi esse tutorial enquanto pesquisava no Google. Mesmo assim ele executa meu procedimento apenas uma vez.
GOSTEI 0
Romulo Contro

Romulo Contro

21/08/2012

como é o esquema que vc faz?
tem um timer nele pra rodar de certo em certo tempo?
ou ele fica rodando direto?
GOSTEI 0
Daniel Capeletti

Daniel Capeletti

21/08/2012

Ele fica rodando direto, hoje eu coloco um sleep dentro de um while.
GOSTEI 0
Romulo Contro

Romulo Contro

21/08/2012

eu penso assim... se vc colocou no OnExecute, ele vai rodar 1 vez mesmo e depois nunca mais enquanto estiver iniciado... a não ser que vc fizer alguma gambiarra aí dentro pra ele ficar rodando toda hora... por exemplo:
i := 0;

while i < 1 do
begin
(timer se quiser)
funções......
end;

o que vc acha?
GOSTEI 0
Daniel Capeletti

Daniel Capeletti

21/08/2012

Eu já faço isso, mas não queria que fosse assim, queria uma maneira mais correta.
GOSTEI 0
Romulo Contro

Romulo Contro

21/08/2012

entendi... eu nao vejo outra maneira mais prática... a não ser que vc der um jeito de implementar fora do onExecute... daí ele não vai ter motivo pra rodar somente 1 vez...

mas se é um serviço que vai fazer especificamente só isso, acho que nao é uma maneira errada fazer assim...

se achar outro jeito, posta aí que fiquei curioso agora também!
GOSTEI 0
Francisco Macário

Francisco Macário

21/08/2012

Ele fica rodando direto, hoje eu coloco um sleep dentro de um while.


Ola Daniel.

O correto será você colocar um temporizador, que pode ser parametrizado.

At.
GOSTEI 0
POSTAR