AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Lebenszeit-Kontrolle bei COM-Interfaces
Thema durchsuchen
Ansicht
Themen-Optionen

Lebenszeit-Kontrolle bei COM-Interfaces

Ein Thema von Oxmyx · begonnen am 11. Jan 2005 · letzter Beitrag vom 11. Jan 2005
 
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#1

Lebenszeit-Kontrolle bei COM-Interfaces

  Alt 11. Jan 2005, 00:45
Um Ressourcen zu sparen, habe ich einen Manager programmiert, der Instanzen von COM-Objekten verwaltet. Z.B. habe ich zwei Interfacevariablen, die beide auf ein und das selbe COM-Objekt (das Interface IDirect3DTexture9) zeigen sollen. Wenn ich einfach zwei mal eine Ladefunktion aufrufe, die mir ein Interface mit einem Bild initialisiert (z.B. D3DXCreateTextureFromFileEx), dann habe ich nachher zwei Interfaces und die Daten doppelt im Speicher.
Daher sage ich meinem Manager, welche Ressource geladen werden soll (z.B. ein Bild), und der Manager schaut in einer internen Liste, ob das schon existiert und ein Interface existiert. Wenn ja, dann wird der Referenzzähler erhöht, und das Interface zurückgeliefert. Analog dazu gibt es eine Release-Methode, bei der der Manager den Referenzzähler so lange Release()d, bis er 0 erreicht hat und sich das Objekt auflöst. In der Theorie jedenfalls. In der Praxis kümmert sich Delphi selber darum, wie und wann der Referenzzähler erhöht wird, und wann nicht. Aber das will ich nicht, da ich mich ja selber darum kümmere. Wegen des Aufbaus und der Funktionsweise meines Managers kann die automatische Verwaltung von COM-Objekten in Delphi gar nicht funktionieren. Aber mir fällt auch keine andere Möglichkeit ein, diese Ressourcen zu verwalten. Ausschalten kann man diese tolle Delphi-Funktion wohl nicht. Aber vielleicht hat jemand noch eine andere Idee, wie ich meine Ressourcen verwalten kann.
  Mit Zitat antworten Zitat
 


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 10:12 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