Thread Watchdog - Delphi örnek - indir

frekans50

⁵⁰
Katılım
8 Ekim 2022
Mesajlar
1,051
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
7,299
Mesajlar
123,402
Üyeler
2,949
Son üye
dündenbiri

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top