Einzelnen Beitrag anzeigen

Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#6

Re: InterfacedObject freigeben

  Alt 5. Dez 2005, 10:51
Zitat von tigerman33:
...
@maximov:
Sorry, aber ich verstehe nicht so ganz, was du mir sagen willst. Dass ich die Liste von vornherein nur als Interface speichern soll? Bin ich ehrlich gesagt nicht so versessen drauf. Und das mit dem zu niedrigen Referenzzähler hab ich ja umgangen indem ich im Konstruktor einfach die Referenz erhöht hab.

Das Problem ist ja eher folgendes (ich male mal so eine Art "Aufrufdiagramm"):

Liste.Free -> Liste.Destroy -> Liste.BeforeDestruction -> Interface._Release -> Liste.Destroy -> Liste.BeforeDestruction -> Interface._Release
etc etc

Diesen doppelten Aufruf des Destruktors wollte ich umgehen. Aber wie es scheint geht das tatsächlich nur indem ich ein neues Feld einführe.
Das ist schon alles richtig, nur das freigeben würde ich nicht direkt über free machen. Ich dachte das eigentlich so: list.Release (free nicht direkt aufrufen) -> List._Release -> RefCount wird 0 -> Liste.Destroy -> fertig!

Das funktioniert dann auch wenn andere interface-referenzen auf die liste zeigen sollten.
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat