Thread Watchdog - Delphi örnek - indir

frekans50

⁵⁰
Katılım
8 Ekim 2022
Mesajlar
1,573
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:

Forum istatistikleri

Konular
8,974
Mesajlar
145,611
Üyeler
3,623
Son üye
Swandy_82

Son kaynaklar

Back
Top