Fórum Serviço não responde a requisição em tempo hábil #584830

14/08/2017

0

Olá, eu sou junior em delphi, estou tentando fazer meu primeiro service application e estou tendo dificuldades. Criei o projeto como Service Application, e o que eu preciso é basicamente gravar informações lidas de uma máquina que mede dados de um tanque de combustível. A comunicação com o aparelho não importa agora, mas sim o Serviço, ele precisa ter um Timer que faça a leitura dos dados e a gravação no banco de dados.
O problema é: Meu serviço não passa do evento OnCreate, os eventos OnStart e OnExecute não são ativados quando o Appplication.Run é executado no projeto. Abaixo seguem as procedures:

procedure TA.ServiceCreate(Sender: TObject);
begin
Showmessage('Serviço criado, timer será disparado');
Timer1.Enabled := True;
end;

procedure TA.ServiceExecute(Sender: TService);
begin
ShowMessage('Serviço em operação, medição irá começar');
medir();
while not self.Terminated do
ServiceThread.ProcessRequests(true);
end;

procedure TA.ServicePause(Sender: TService; var Paused: Boolean);
begin
Timer1.Enabled := False;
end;

procedure TA.ServiceStart(Sender: TService; var Started: Boolean);
begin
Showmessage('Serviço iniciadio');
end;

procedure TA.Timer1Timer(Sender: TObject);
begin
Medir();
end;

Ok me perdoem pelo nome "A" para o projeto. Quando eu dou project.exe /install a aplicação é instalada mas o serviço fica como "Interrompido" no gerenciador do Windows, e quando eu tento iniciar ele aparece a mensagem "O serviço não respondeu a requisição de controle em tempo hábil"
Alguém pode me dizer o que estou fazendo de errado?
Guilherme

Guilherme

Responder

Posts

14/08/2017

Gutierry Pereira

Boa noite,
1 - Serviços não devem fazer operações graficas, isso necessita de permissão e em geral da problemas. Remova os showMessage e se precisar logar faça isso escrevendo em um arquivo de log.

2 - Tente executar o serviço sem a thread. possa ser que sua thread esteja dando algum problema.

3 - Faça o Mesmo com o timer.
Responder

Gostei + 0

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

Aceitar