Thread Watchdog - Delphi örnek - indir

frekans50

⁵⁰
Katılım
8 Ekim 2022
Mesajlar
1,585
Mikrodenetleyici programlarından bildiğimiz Watchdog uygulamasını bilgisayar için yaptım.

Thread ile çalışırken bir şeylerin ters gitmesi ve kilitlenme durumları için yararlıdır.

Donanım kaynaklı kilitlenmeler, bu yöntemi zorunlu hale getirdi.

Çalışma şekli:

Bir thread işe başlamadan önce, bir süre sonra kendisini sonlandıracak başka bir thread başlatıyor.
İşi zamanında yapabilirse katili kendisi öldürüyor.

1681992937177.png



Kod:
unit Unit1;
....

procedure TWorker.Execute;

var
  dog: TWatchDog;

begin

  dog := TWatchDog.Create(true); // dog: kendisini öldürecek thread
  dog.th := self;
  dog.TimeTowait := 5000;
  dog.Resume;

  while not terminated do
  begin
    windows.beep(5000, 50); // "Yaşıyorum" mesajı.
    sleep(500);

    // Süre bitmeden  katilin işine son vermek isterse
    //  if vazgectim then do ThreadKill(dog); // katili öldür

  end;

end;

procedure TWatchDog.Execute;
begin
  sleep(timetowait);
  windows.Beep(3000, 500); // Süre tamam. Ateş ediyor

  if assigned(th) then
    ThreadKill(th);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

  worker := tworker.Create(false);

end;

end.
 

Ekler

Son düzenleme:

Çevrimiçi üyeler

Forum istatistikleri

Konular
9,003
Mesajlar
145,858
Üyeler
3,633
Son üye
zehra

Son kaynaklar

Back
Top