Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [DLL][COM] Problem mit Laden der DLL (https://www.delphipraxis.net/71589-%5Bdll%5D%5Bcom%5D-problem-mit-laden-der-dll.html)

andimx 17. Jun 2006 20:07


[DLL][COM] Problem mit Laden der DLL
 
Hallo alle zusammen,

Ich hab ein kleines oder auch großes Problem. Ich habe in einer DLL ein ComServer (um genau zu sein ein OPC Server) und ich habe mehrere Callback Schleifen in dieser DLL zum update einer Desktop Anwendung die an die DLL angedockt hat (also über Implementierung der DLL-Schnittstelle, nicht über COM oder OPC).

Nun starte ich diese Desktop Anwendung und alles ist perfekt. Nun starte ich einen OPC Client um den Namespace zu bearbeiten, allerdings habe ich jetzt folgendes beobachtet:

Es werden 2 Instanzen der DLL kreiert, also das COM-Objekt lädt die DLL nochmal in den Speicher.
Nun möchte ich aber das die DLL nur einmal geladen wird und das COM Objekt auch nur EINMAL global erzeugt wird.

Gibt es da eine Möglichkeit?


Gruß
Andi

Bernhard Geyer 17. Jun 2006 20:11

Re: [DLL][COM] Problem mit Laden der DLL
 
Was spricht dagegen das zwar das COM-Objekt mehrmals erzeugt wird aber dieses per Singleton-Pattern nur mit einem eigentlichen Worker-Objekt arbeitet?

andimx 17. Jun 2006 20:17

Re: [DLL][COM] Problem mit Laden der DLL
 
Das wäre nicht das Problem, wenn nicht das Worker-Objekt auch mehrmals erzeugt wird und das passiert leider wirklich -> Also die DLL muss mehrmals geladen werden. Less ich die Handles aus hab ich 2 verschiedene DLL handles.

Zum Beispiel befindet sich in der DLL ein Debuuger Thread der intern nachrichten abfangt und in ein Log file schreibt.

Jetzt passiert folgendes: Die Anwendung die an die DLL angedockt ist (entweder durch Implementierung oder COM Creation) schreibt auch das LOG und zwar nur mit den Werten aus der eigenen DLL instanz, d.h. die beiden sehen sich überhaupt net.

Bernhard Geyer 17. Jun 2006 20:26

Re: [DLL][COM] Problem mit Laden der DLL
 
Beim erstellen der COM-Klasse über den IDE-Wizard hast du doch einige Entscheidungen bezüglich Appartment-Model, ... gemacht. In deiner Implementierungsunit des COM-Interfaces gibt es doch im Initialisierungsabschnit einen Eintrag. Schau mal in der Hilfe nach. Ich glaube duch änderung des Appartmentmodells sollte sich das Lösen lassen.

andimx 19. Jun 2006 07:53

Re: [DLL][COM] Problem mit Laden der DLL
 
Ist kein COM Objekt das mit dem IDE Wizard entwickelt worden ist!
Ist leider eine geschlossene Library..
Ich bin gerade dabei mal die XRTL Library mir anzuschauen, die hat auch einen guten OPC Server drin.


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