Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi XE5 Android Thread (TIdThreadComponent) Beenden

  Alt 5. Jan 2014, 15:02
Der übliche Weg einen solchen Thread vorzeitig zu beenden ist der Aufruf von Terminate oder TerminateAndWaitFor. Dazu muss aber sinnvollerweise im OnRun-Event auch regelmäßig auf Sender.Terminated geprüft werden und die Event-Methode auch entsprechend beendet werden. Wie es jetzt ist, läuft der Thread mindestens 16 bzw. 12 Sekunden, bevor er sich beendet.

Abgesehen davon ist es grob fahrlässig
  • eine globale Variable (ohne Synchronisierung) zu benutzen
  • dieselbe (auch noch globale) Thread-Instanz zweimal zu verwenden, ohne die vorherige freizugeben bzw. anderweitig für die spätere Freigabe zu sorgen (z.B. durch die Übergabe eines Owners in Create)
  • Destroy direkt aufzurufen
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat