Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

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

AW: Prüfen, ob Referenz auf tatsächlich existentes Objekt zeigt

  Alt 6. Okt 2011, 01:05
Es muss einen geben, der ist der "Chef" bzw. Erzeuger und Zerstörer des Objekts.
Im Zweifel ist dies das Formular, von dem aus die Threads gestartet wurden.
Die Abfolge ist wie folgt:
1. Formular erzeugt das Objekt (z.B. Datanbank-Objekt, TCP-Socket,...)
2. Formular erzeugt das Threadobjekt (CreateSuspended=True!!) und merkt sich das Threadobjekt
3. Formular übergibt das Objekt von 1. dem Thread (über ein Property)
4. Formular startet den Thread mit Aufruf thread.Resume

Falls nun das Formular zerstört wird muss Folgendes getan werden
5. Formular signalisiert dem Thread sich zu beenden (thread.Terminate)
sollte der Thread schon zuende sein, kann 5. und 6. übersprungen werden
Wichtig: der Thread muss immer wieder prüfen, ob Terminated=True ist und falls ja,
sofort die Execute-Methode verlassen
6. Formular wartet auf das Ende des Threads
7. Formular entsorgt alles was es selbst erzeugt hat; also das Objekt und auch das Threadobjekt
  Mit Zitat antworten Zitat