AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer im Hintergrund Thread

Ein Thema von DelphiUser123 · begonnen am 23. Sep 2024 · letzter Beitrag vom 23. Sep 2024
Antwort Antwort
DelphiUser123

Registriert seit: 23. Feb 2013
39 Beiträge
 
#1

Timer im Hintergrund Thread

  Alt 23. Sep 2024, 21:27
Hallo liebes Forum.
Folgendes Problem: Ich möchte, dass eine Timer Geschichte in einem Hintergrund Thread arbeitet. Eigentlich wäre es eine Möglichkeit mit Endlosschleifen zu arbeiten, dies funktioniert aber bei mir nicht, weswegen ich es über Timer realisieren will. Es funktoniert bisher mit dem Timer, jedoch lediglich im Hauptprogramm.

Hier mein bisheriger Rahmencode (mit nicht funktionierender Endlosschleife):
Code:


type
  TMyThread = class(TThread)
    procedure Execute; override;
  end;

type
  TForm33 = class(TForm)



procedure TMyThread.Execute;
begin
 
  while true do begin
  Sleep(1000);
   try …

    {längerer zu wiederholender Threadcode}
   
   except …
 
  end;
end;

...

procedure TForm33.FormCreate(Sender: TObject);
var MyThread: TMyThread;
begin
    MyThread := TMyThread.Create(False); // startet sofort

end;
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Timer im Hintergrund Thread

  Alt 23. Sep 2024, 21:34
Was genau "funktioniert denn nicht"?

Im übrigen ist es im Execute() besser, seine "Endlos-"Schleifen mit while not (self.)Terminated do ... zu "rahmen", da der Thread sonst nie terminieren kann - auch nicht, wenn es ihm von außen gesagt wird.

(Delphi VCL) TTimer: Geht nicht, weil der auf Window-Messages basiert, die nur vom Hauptthread verarbeitet werden.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
DelphiUser123

Registriert seit: 23. Feb 2013
39 Beiträge
 
#3

AW: Timer im Hintergrund Thread

  Alt 23. Sep 2024, 21:48
Was genau "funktioniert denn nicht"?
Der Code wird nicht wiederholt, sondern läuft nur einmal ab. Es handelt sich um einen kontinuierlichen Check ob eine bestimmte USB Stick Datei vorhanden ist, falls nicht, schließt das Programm.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Timer im Hintergrund Thread

  Alt 23. Sep 2024, 21:59
Auf jeden Fall nur Timer ODER Thread.

Timer ist einfacher. Wenn es sich damit gut lösen lässt und die Aktion im Timer keine hohe Last auslöst, dann nimm ihn.

Ansonsten einen Thread (die Details wären dann noch genauer abzustimmen).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Timer im Hintergrund Thread

  Alt 23. Sep 2024, 22:03
Was genau "funktioniert denn nicht"?
Der Code wird nicht wiederholt, sondern läuft nur einmal ab. Es handelt sich um einen kontinuierlichen Check ob eine bestimmte USB Stick Datei vorhanden ist, falls nicht, schließt das Programm.
Könnte dann ggf. das selbe Problem wie mit dem TTimer im Thread sein, wenn deine Methode für diesen Check ebenfalls nicht threadtauglich ist. Wenn, wie durchaus denkbar z.B. auch dort Messages genutzt werden. Aber ohne genau zu wissen, was du da im einzelnen für programmiert hast, bleiben wir beim Rätselraten.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Timer im Hintergrund Thread

  Alt 23. Sep 2024, 22:33
Vermutlich machst du in dem Code etwas, das nicht im try..except abgefangen wird. Dafür kann man z.B. den ErrorMode anpassen.

Die Frage ist, was du da machst.

Was passiert denn im Debugger?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz