Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Referenzzähler runterzählen (https://www.delphipraxis.net/189462-referenzzaehler-runterzaehlen.html)

EWeiss 15. Jun 2016 00:10

Referenzzähler runterzählen
 
Ist es möglich den Referenzzähler codemäßig herunterzuzählen?
Ich habe das Problem wenn meine DLL nicht komplett aus dem Speicher entfernt wird
dann läuft diese nicht mehr nach einen 3 Aufruf.

gruss

Zacherl 15. Jun 2016 01:19

AW: Referenzzähler runterzählen
 
Von was denn? Referenzzähler von Interfaces oder der Dll selbst?

EWeiss 15. Jun 2016 01:26

AW: Referenzzähler runterzählen
 
Zitat:

Zitat von Zacherl (Beitrag 1340207)
Von was denn? Referenzzähler von Interfaces oder der Dll selbst?

Der DLL

Ich muss jetzt zweimal
Delphi-Quellcode:
     
FreeLibrary(VisDLLHandle);

FreeLibrary(VisDLLHandle);
eingeben damit der Referenzzähler runtergezählt wird.
Programmtechnisch ist das aber nicht gerade die feinste art.

Auch bei Com-DLL's das gleiche trotz NIL bleiben die im Speicher.
Ich muss diese aber unbedingt entfernen.
_Release springt leider nicht an.

gruss

Neutral General 15. Jun 2016 07:56

AW: Referenzzähler runterzählen
 
Du musst die DLL nur 2x freigeben wenn du sie auch zweimal geladen hast.

Bernhard Geyer 15. Jun 2016 08:01

AW: Referenzzähler runterzählen
 
Zitat:

Zitat von EWeiss (Beitrag 1340208)
Auch bei Com-DLL's das gleiche trotz NIL bleiben die im Speicher.
Ich muss diese aber unbedingt entfernen.
_Release springt leider nicht an.

Bei COM-DLL musst du MS um eine änderung der Windows-Implementierung bitten.
Hier sagt sich MS: Da es es schon mal verwendet wurde lass ich die DLL im Speicher.

Aber wäre es nicht besser den eigentlichen Fehler zu korrigieren als um den Fehler herum zu Programmieren?
Was für ein Fehlerbild hast du den?
Das die DLL nicht entladen wird (jedenfalls bei COM) ist kein Fehler

himitsu 15. Jun 2016 13:45

AW: Referenzzähler runterzählen
 
Drum heißt es ja auch Referenzzähler.
Jedes einzelne LoadLibrary erfordert auch ein FreeLibrary.

Gut, man könnte jetzt auch mit GetModuleHandle und FreeLibrary so lange suchen+freigeben, bis es weg ist,
aber was wohl passieren mag, wenn irgendwo jemand noch denkt die DLL zu haben, durch sein LoadLibrary, und drauf zugreifen will, aber du ihm die DLL geklaut hast?

EWeiss 15. Jun 2016 14:32

AW: Referenzzähler runterzählen
 
Zitat:

Was für ein Fehlerbild hast du den?
Das die DLL nicht entladen wird (jedenfalls bei COM) ist kein Fehler
Keines :)
Mich nervt es nur das die ganzen DLL's im Speicher liegen.

Zitat:

aber was wohl passieren mag, wenn irgendwo jemand noch denkt die DLL zu haben, durch sein LoadLibrary, und drauf zugreifen will, aber du ihm die DLL geklaut hast?
Was geklaut
Habe niemand was weggenommen.

Zitat:

Du musst die DLL nur 2x freigeben wenn du sie auch zweimal geladen hast.
Oh dann bin ich blöd denn das wusste ich nicht.

Danke für die Info.


gruss

EWeiss 15. Jun 2016 16:42

AW: Referenzzähler runterzählen
 
@Neutral General

Habe es jetzt nochmal optimiert.
Jetzt geht es wieder auf normalen weg 1x Unload Library

Danke :)

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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