Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DLL von OLE DB Connection entladen (https://www.delphipraxis.net/97329-dll-von-ole-db-connection-entladen.html)

sirius 8. Aug 2007 21:10

Datenbank: Oracle • Version: 9 • Zugriff über: ADO

DLL von OLE DB Connection entladen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe ein kleines nonVCL-Programm geschrieben, was nix weitres macht, als sich in den TNA zu platzieren (und da ein paar Infos ausgibt) und ansonsten in regelmäßigen (weit auseinander liegenden) Zeitabständen bestimmte Verzeichnisse nach neuen Dateien durchforstet. Diese Dateien beinhalten Messdaten, die in eine Datenbank kopiert werden sollen.
Wenn so ein Kopiervorgang startet wird eine (von mir geschriebene) DLL geladen (mit VCL), die alles weitere veranlasst und in einem eigenen Thread (eigentlich in mehreren) die Daten kopiert.
die Idee war die, wenn die DLL fertig ist, soll sie wieder entladen werden und mein virtueller Addressraum soll wieder so aussehen, wie vor dem Kopiervorgang. Dem ist aber nicht so. Klar, die meinige DLL wird problemlos entladen. Alle Threads sind gestoppt, etc, pp.
Nur dummerweise hocken noch folgende (siehe Anhang Module bei mir rum ).

Jetzt meine Frage(n):
Sind die bloß bei mir reingemappt und hängen sowieso im Hauptspeicher rum oder wurden die extra geladen?
Kann ich die über den Treiber wieder entladen?


Derzeit mache ich es so, dass wenn das Programm nach so einem Kopiervorgang ne Weile nix zu tun hatte (es hat ca. 95% des Tages nix zu tun), startet es sich einfach neu. Aber so sauber finde ich das nicht.

Bernhard Geyer 9. Aug 2007 06:09

Re: DLL von OLE DB Connection entladen
 
Da ich bei Oracle andere Kompos mit weniger Nebenwirkungen verwende vermute ich mal stark das es sich hierbei die per ADO/OLE DB geladenen DLL's handelt. Und da AFAIK Windows einmal per OLE/COM geladene DLL's nie mehr entläd bleibt das so und ist "AS DESIGNED".

Ein Alternative wären die Kompos von http://www.crlab.com/. Diese lassen sich so betreiben das keinerlei ADO/Oracle DLL's benötigt werden und damit zwangsweise auch nicht geladen werden.

sirius 9. Aug 2007 07:34

Re: DLL von OLE DB Connection entladen
 
Das Thema "Core Lab" hatten wir ja in nem anderen Thread schonmal. Für dieses Projekt geht es leider nicht mehr (ich hab zwar nochmal nachgefragte, aber :cry: ).

Naja, Pech eben. Das bedeutet, dass die DLL's im Speicher bleiben, auch wenn ich meinen Process schließe :gruebel: .

Bernhard Geyer 9. Aug 2007 07:37

Re: DLL von OLE DB Connection entladen
 
Zitat:

Zitat von sirius
Naja, Pech eben. Das bedeutet, dass die DLL's im Speicher bleiben, auch wenn ich meinen Process schließe :gruebel: .

Wenn Du deinen Prozess (die Komplette Anwendung schließt) ist das nicht mehr "dein Bier". Hier muß Windows dafür sorgen/feststellen welche DLL's noch benötigt werden und welche nicht mehr (auch bei Programmierfehlern deinerseits).


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