AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Freigabe einer Instanz in einem Event dieser
Thema durchsuchen
Ansicht
Themen-Optionen

Freigabe einer Instanz in einem Event dieser

Ein Thema von TurboMagic · begonnen am 28. Mai 2021 · letzter Beitrag vom 28. Mai 2021
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.812 Beiträge
 
Delphi 12 Athens
 
#1

Freigabe einer Instanz in einem Event dieser

  Alt 28. Mai 2021, 12:58
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Freigabe einer Instanz in einem Event dieser

  Alt 28. Mai 2021, 13:21
Wenn das Event in dem Thread ausgeführt wird, wo sonst auch dieses Objekt vernwendet wird (nur dort), dann gibt es keine Probleme.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.812 Beiträge
 
Delphi 12 Athens
 
#3

AW: Freigabe einer Instanz in einem Event dieser

  Alt 28. Mai 2021, 14:25
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.993 Beiträge
 
Delphi 12 Athens
 
#4

AW: Freigabe einer Instanz in einem Event dieser

  Alt 28. Mai 2021, 14:30
Ein solcher Aufruf von ForceQueue synchronisiert das 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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 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