Service Application - Como criar uma serviço do windows que executa de tempo em tempo (sem parar) ?
Eu criei um uma Service Application. Mas estou com dificuldade com o seguinte:
- Preciso de um serviço que delete uns arquivos de tempo em tempos
Só que criando um serviço o máximo que eu consegui foi fazer uma aplicação que execute todo dia e delete os arquivos que eu quero!
Só que preciso criar uma serviço do windows que executa de tempo em tempo (sem parar), Por exemplo de 10 em 10 minutos.
Eu coloquei um TIMER no Form principal só que não está funcionando!
um exemplo de código que eu achei...
- Preciso de um serviço que delete uns arquivos de tempo em tempos
Só que criando um serviço o máximo que eu consegui foi fazer uma aplicação que execute todo dia e delete os arquivos que eu quero!
Só que preciso criar uma serviço do windows que executa de tempo em tempo (sem parar), Por exemplo de 10 em 10 minutos.
Eu coloquei um TIMER no Form principal só que não está funcionando!
um exemplo de código que eu achei...
procedure TService.ServiceExecute(Sender: TService); begin DeleteArquivos(); //TimerExecuta.OnTimer(Self); ---> linha já to tentando tudo rs while not self.Terminated do {---> Este é um código que vi na net Mas pelo que o cara disse era para nunca parar de rodar o serviço Mas não ocorreu do cheio que eu achei} ServiceThread.ProcessRequests(True); end;
Ewerton Rodrigues
Curtidas 0
Melhor post
Flex Ltda
27/08/2015
Olá a todos!
Obrigado https://www.devmedia.com.br/forum/perfil/valquiria-silva/365448 era isso mesmo não tinha me ligado.
Obrigado https://www.devmedia.com.br/forum/perfil/valquiria-silva/365448 era isso mesmo não tinha me ligado.
GOSTEI 1
Mais Respostas
Flex Ltda
27/08/2013
Olá,
Conseguiu resolver essa situação?
Preciso de algo parecido
Conseguiu resolver essa situação?
Preciso de algo parecido
GOSTEI 0
Valquiria Silva
27/08/2013
Edvilson, para a situação que o Ewerton colocou, pensaria no seguinte:
Cria o serviço,
Cria uma thread que executa sua rotina
No serviço você coloca um timer
No evento ontimer do timer você chama a thread
desta maneira o serviço quando for iniciado ativa o Timer
e quando o serviço for parado ele irá parar o Timer.
Abs.
Cria o serviço,
Cria uma thread que executa sua rotina
No serviço você coloca um timer
No evento ontimer do timer você chama a thread
desta maneira o serviço quando for iniciado ativa o Timer
e quando o serviço for parado ele irá parar o Timer.
Abs.
GOSTEI 0
Raimundo Pereira
27/08/2013
0- Uses shellapi
TEMPO_T: TTimer;
Execute: TButton;
Label1: TLabel;
procedure TEMPO_TTimer(Sender: TObject);
procedure ExecuteClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
var
Form1: TForm1;
Directorio:string;
Comando:string;
Tempo:integer;
Procedure Remove_Arquivos;
begin
Directorio:='C:\APLIC\*.XML';
Comando:='erase /s /q /f '+Directorio;
ShellExecute(0,nil,'cmd.exe',PWideChar('/c ' + Comando),nil,0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
tempo:=10;
TEMPO_T.Enabled:=true;
end;
procedure TForm1.ExecuteClick(Sender: TObject);
begin
Remove_Arquivos;
Tempo:=10;
TEMPO_T.Enabled:=true;
end;
procedure TForm1.TEMPO_TTimer(Sender: TObject);
begin
Tempo:=Tempo-1;
Label1.Caption:='Faltam '+IntToStr(tempo)+', para execução da rotina';
if Tempo=0then //Se for usar minutos é só multiplicar por 60 para cada minuto
//exemplo 2 minutos= 120 >> Tempo=120
begin
TEMPO_T.enabled:=false;
Execute.Click;
end;
// Você pode por a aplicação para rodar em modo oculto
// Bloqueiar o ALT+F4.
Fiz o teste e funcionou .
Dá um retorno
TEMPO_T: TTimer;
Execute: TButton;
Label1: TLabel;
procedure TEMPO_TTimer(Sender: TObject);
procedure ExecuteClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
var
Form1: TForm1;
Directorio:string;
Comando:string;
Tempo:integer;
Procedure Remove_Arquivos;
begin
Directorio:='C:\APLIC\*.XML';
Comando:='erase /s /q /f '+Directorio;
ShellExecute(0,nil,'cmd.exe',PWideChar('/c ' + Comando),nil,0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
tempo:=10;
TEMPO_T.Enabled:=true;
end;
procedure TForm1.ExecuteClick(Sender: TObject);
begin
Remove_Arquivos;
Tempo:=10;
TEMPO_T.Enabled:=true;
end;
procedure TForm1.TEMPO_TTimer(Sender: TObject);
begin
Tempo:=Tempo-1;
Label1.Caption:='Faltam '+IntToStr(tempo)+', para execução da rotina';
if Tempo=0then //Se for usar minutos é só multiplicar por 60 para cada minuto
//exemplo 2 minutos= 120 >> Tempo=120
begin
TEMPO_T.enabled:=false;
Execute.Click;
end;
// Você pode por a aplicação para rodar em modo oculto
// Bloqueiar o ALT+F4.
Fiz o teste e funcionou .
Dá um retorno
GOSTEI 0
Raimundo Pereira
27/08/2013
Ou simplificar com o exemplo da Valquiria
GOSTEI 0