procedure TAdware_Update.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Yapmak istediğim şeyler;//asıl yapılacaklar
sleep(86400000);//bi 24 saat ara verip tekrar üstteki satır çalışacak
ServiceThread.ProcessRequests(false);
end;
end;
Burda farkettiğiniz gibi 24 saatte bir ,bi kontrol yapmak istiyorum fakat kafama takılan şu.Sleep komutuna böyle yüksek bi değeri vermek doğrumudur.Yoksa timer thread ikilisi ile mi çözmek gerek.Sizin fikrinizi merak ediyorum.Birde sleep kullandığımız zaman stabil olurmu olmaz mı?
Hepinize kolay gelsin....
Timer ile çözmek daha doğru olacaktır. Her 24 saatte bir timer tetiklenir ve işlevleri yerine getirir. Ama dilerseniz Timer olayında işlevleri yapmak için ayrıca THREAD oluşturabilirsiniz.
merhaba murat hocam yeni bir baslikacmaktansa buraya yazmaya karar verdim konu asa yukari ayni. timer i spinedit.value sine gore nasil zamanlaya bilirim. ornek
spinedit.value := 30 ; // bu 30 saniye olarak atanacak
sure dolunca
showmessage('zaman geldi'); // gibi msj vercek
bu dongu boyle devam edicek. her 30 saniye de bir msj vericek.. bu konuda yardim istiyorum sizlerden ...
Sure:=0;
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(Sure);
label1.Caption:=Timetostr(Time);
If Sure=Spinedit.value Then Begin
Sure:=0;
Showmessage('Süre doldu...');
end;
end;
Sure:=0;
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(Sure);
label1.Caption:=Timetostr(Time);
If Sure=Spinedit.value Then Begin
Sure:=0;
Showmessage('Süre doldu...');
end;
end;
Kolay gelsin
dediginiz gibi olmadi yada ben yapamadim.. sisteme cok yuk binecek ama anca 2 timer ile bunu basardim
var
Form1: TForm1;
Sure:Integer;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
Sure:=0;
Timer1.Enabled:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=TimeToStr(Time); // seçimlik
Inc(Sure);
If Sure=JvSpinEdit1.Value Then begin //JvSpinEdit1.Value=30
Sure:=0;
Showmessage('Süre bitti...');
end;
end;
yukarida verdiginiz kod ile bu kod ayni degil zaten arti her msj dan sonra button tiklamak zorundayim bunu istemiyorum. benim kodumda mesaj vermiyor baska bir islem yaptiriyorum. bu yuzden bu kod isimi gormedi ilgilenen herkese cok tesekkur ederim. kendi cozumum :
Forma 2 adet timer koyudum . timer 1 enabled si false ve interval degeri 1
timer1 event a :
Yani bu kod sadece bir örnek ve bilgilendirme amaçlı bunu kendinize göre değiştirmek sizin elinizde , koddaki Showmessage yerine çalıştıracağınız kod bloğunu, procedure yada functionu tanımlamak ta sizin elinizde, dilediğiniz gibi yönlendirme yapabilirsiniz.
Kolay gelsin...