Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi TEvent.free im Thread Destructor? (https://www.delphipraxis.net/180451-tevent-free-im-thread-destructor.html)

Mavarik 21. Mai 2014 16:00

AW: TEvent.free im Thread Destructor?
 
Zitat:

Zitat von jaenicke (Beitrag 1259659)
Zitat:

Zitat von Mavarik (Beitrag 1259644)
Waitfor nicht nötig da im Thread Destructor schon vorhanden!

Wenn man es denn in der Reihenfolge aufruft wie Sir Rufo geschrieben hat, funktioniert das auch, ja.

Mach ich ja!

Sir Rufo 21. Mai 2014 16:37

AW: TEvent.free im Thread Destructor?
 
Zitat:

Zitat von Mavarik (Beitrag 1259665)
Zitat:

Zitat von jaenicke (Beitrag 1259659)
Zitat:

Zitat von Mavarik (Beitrag 1259644)
Waitfor nicht nötig da im Thread Destructor schon vorhanden!

Wenn man es denn in der Reihenfolge aufruft wie Sir Rufo geschrieben hat, funktioniert das auch, ja.

Mach ich ja!

... jetzt ;)

Das Delphi-Referenz durchsuchenTThread.TerminatedSet ist irgendwann hinzugekommen und wird direkt am Ende von Delphi-Referenz durchsuchenTThread.Terminate aufgerufen.

Umbauen kannst du das, wenn du die Delphi-Referenz durchsuchenTThread.Terminate-Methode überschreibst (die ist natürlich nicht
Delphi-Quellcode:
virtual
, wär ja sonst zu einfach).

Mavarik 21. Mai 2014 16:47

AW: TEvent.free im Thread Destructor?
 
Zitat:

Zitat von Mavarik (Beitrag 1259643)
Delphi-Quellcode:
Destructor TMyThread.destroy;
begin
  Inherited;
  FMyEvent.Free; // NACH INHERITED!!!!!! Stimmt hab ich auch gefunden!
end;
s.o.

wie gesagt...

Sir Rufo 21. Mai 2014 17:03

AW: TEvent.free im Thread Destructor?
 
Zitat:

Zitat von Mavarik (Beitrag 1259678)
Zitat:

Zitat von Mavarik (Beitrag 1259643)
Delphi-Quellcode:
Destructor TMyThread.destroy;
begin
  Inherited;
  FMyEvent.Free; // NACH INHERITED!!!!!! Stimmt hab ich auch gefunden!
end;
s.o.

wie gesagt...

Ja, was denn?

Was passiert denn, wenn Terminate aufgerufen wird? Wird dann der Event gesetzt?

Wenn nicht, dann wartet dein Thread bis zum Ende aller Tage.

Peter666 21. Mai 2014 18:38

AW: TEvent.free im Thread Destructor?
 
Probiers mal so:

Code:
destructor TMyThread.Destroy;
begin
 Terminate;
 FMyEvent.SetEvent;
 WaitFor;
 FMyEvent.free;
 inherited;
end;

Mavarik 22. Mai 2014 08:45

AW: TEvent.free im Thread Destructor?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1259682)
Ja, was denn?

FMyEvent.Free; // NACH INHERITED!!!!!! Stimmt hab ich auch gefunden!

Zitat:

Zitat von Sir Rufo (Beitrag 1259682)
Was passiert denn, wenn Terminate aufgerufen wird? Wird dann der Event gesetzt?

Wenn nicht, dann wartet dein Thread bis zum Ende aller Tage.

War doch schon alles erledigt und nicht die Frage...

1. Version aus der Frage...
Delphi-Quellcode:
Destructor TMyThread.destroy;
begin
   Terminate;
   MyEvent.SetEvent;
   MyEvent.Free; // Gut oder schlecht???
   Inherited;
end;
Finale Version...
Delphi-Quellcode:
Destructor TMyThread.destroy;
begin
   Terminate;
   FMyEvent.SetEvent; // Mit F für Sir Rufo
   Inherited;
   FMyEvent.Free; // Nach Ingerited! Hatte ich schon gefunden
end;
Alles Prima läuft!

Mavarik


@Peter666 Waitfor ist schon im free... FMyEvent.Free muss dann nur noch nach dem Inherited gemacht werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz