Service Application - Como criar uma serviço do windows que executa de tempo em tempo (sem parar) ?
27/08/2013
0
- 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
Post mais votado
27/08/2015
Obrigado https://www.devmedia.com.br/forum/perfil/valquiria-silva/365448 era isso mesmo não tinha me ligado.
Flex Ltda
Mais Posts
26/08/2015
Flex Ltda
Conseguiu resolver essa situação?
Preciso de algo parecido
26/08/2015
Valquiria Silva
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.
26/08/2015
Raimundo Pereira
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
Clique aqui para fazer login e interagir na Comunidade :)