Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Freigabe einer Instanz in einem Event dieser (https://www.delphipraxis.net/208018-freigabe-einer-instanz-einem-event-dieser.html)

TurboMagic 28. Mai 2021 12:58

Freigabe einer Instanz in einem Event dieser
 
Hallo,

angenommen eine Klasse verrichtet ihre Arbeit asynchron und meldet das Ende des Vorgangs
per Event zurück. Dieses Event hat als ersten Parameter den Sender als Objektinstanz dieser
asynchronen Klasse. Wenn ich nun diesen im Event benutze um das Objekt freizugeben,
wäre das schlimm?

Die Alternative wäre sich die Instanz zu merken und die Freigabe über einen kurz
laufenden Timer oder das Senden einer WIndows-Botschaft auf einen Zeitpunkt kurz hinter
den Eventaufruf zu legen...

Grüße
TurboMagic

himitsu 28. Mai 2021 13:21

AW: Freigabe einer Instanz in einem Event dieser
 
Wenn das Event in dem Thread ausgeführt wird, wo sonst auch dieses Objekt vernwendet wird (nur dort), dann gibt es keine Probleme.

TurboMagic 28. Mai 2021 14:25

AW: Freigabe einer Instanz in einem Event dieser
 
Danke!

Uwe Raabe 28. Mai 2021 14:30

AW: Freigabe einer Instanz in einem Event dieser
 
Ein solcher Aufruf von ForceQueue synchronisiert das
Delphi-Quellcode:
Sender.Free
mit dem MainThread (Sender wird also auch im MainThread freigegeben), verzögert es aber auch wenn es aus dem MainThread heraus aufgerufen wird. Bei einem simplen Queue wäre das nicht der Fall.
Delphi-Quellcode:
begin
  TThread.ForceQueue(nil,
    procedure
    begin
      Sender.Free;
    end);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.

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