Thema: Delphi Thread nicht terminiert?

Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#13

AW: Thread nicht terminiert?

  Alt 1. Feb 2013, 20:21
Mit einer globalen Var und dann: dynform := TFrmGMaps(Application.findcomponent(threadname)); geht es ...
Warum nicht Application. x..... ?
Du hast bestimmt schon gehört, dass man globale Variablen vermeiden soll.
Dafür gibt es mehrere Gründe; die vollständige Liste kann ich leider nur auf Englisch anbieten:
http://c2.com/cgi/wiki?GlobalVariablesAreBad
Globale Variablen sind sozusagen das Gegenteil von Objekt-orientierter-Programmierung bei der man versucht, alle Aspekte möglichst lokal zu behandeln. (Stichwort: Datenkapselung)
Wird nicht gefunden
Du hast bestimmt vergessen die Klasse "TMyThread" zu erweitern.
Delphi-Quellcode:
TMyThread = class(TThread)
public
   dynform : TFrmGMaps; // <== das fehlt bei dir
   procedure execute; override;
end;
Hier noch das Grundprinzip:
Bevor ein Thread gestartet wird, gibt man ihm von Aussen alle Informationen, die er braucht.
Der Thread kann sich dann ganz auf seine Aufgabe konzentrieren; er braucht nicht Application.FindComponent aufrufen, weil er sämliche Infos (Objekte, Daten, Werte) schon beim Start bekommen hat.
  Mit Zitat antworten Zitat