Fórum Criando um serviço Windows Server 2008 #422097

21/08/2012

0

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

Responder

Posts

21/08/2012

Romulo Contro

Olá, tenta dar uma olhada nesse link:

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

Gostei + 0

21/08/2012

Daniel Capeletti

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.
Responder

Gostei + 0

21/08/2012

Romulo Contro

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

Gostei + 0

21/08/2012

Daniel Capeletti

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

Gostei + 0

21/08/2012

Romulo Contro

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?
Responder

Gostei + 0

21/08/2012

Daniel Capeletti

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

Gostei + 0

21/08/2012

Romulo Contro

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!
Responder

Gostei + 0

21/08/2012

Francisco Macário

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar