Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: [D7] EThread: Thread-Fehler: (6)

  Alt 15. Feb 2023, 18:50
Es gibt eine globale Variable mit der Referenz auf die TThread-Instanz,
aber gleichzeitig wird durch FreeOnTerminate irgendwann die Instanz gelöscht und diese Variable wird ungültig.

Auf solche Variablen darf man bei Verwendung von FreeOnTerminate eigentlich nie wieder drauf zugreifen (besser es gibt erst garnicht solche Variablen),
es sei denn man gestaltet diese Zugriffe thread-safe (CriticalSection), also um das Auslesen, als auch um das :=nil, welches am Ende des Threads von Diesem gemacht werden muß.

Auch das extern gespeicherte Thread-Handle ist nach dem Ende des Threads ungültig.
Hier könnte man sich via DuplicateHandle ein eigenes Handle besorgen und damit weiterarbeiten.
Kurz nach Erstellen/Start des Threads (wenn dieser "garantiert" länger läuft), oder besser innerhalb des Threads dupplizieren, also so lange das Thread.Handle garantiert gültig ist.
$2B or not $2B
  Mit Zitat antworten Zitat