Win32-dll in AppDomain

05/02/2009 - 10:25 von Jürgen Schildmann | Report spam
Hi,
Ich habe eine ANwendung mit einem Plugin-System, in der jedes Plugin
in eine eigene AppDomain geladen wird.
Ich kann PlugIns mehrfach ausführen. In jedem PlugIn nutze ich eine
Win32-dll.

Nun meine Frage:
Wird die Win32-dll in jeder AppDomain jedesmal neu initialisiert, so
als wenn sie in unterschiedlichen Applikationen làuft?

Gruß,
Jürgen
 

Lesen sie die antworten

#1 Frank Dzaebel
05/02/2009 - 12:18 | Warnen spam
Hallo Jürgen,

Wird die Win32-dll in jeder AppDomain jedesmal neu initialisiert, so
als wenn sie in unterschiedlichen Applikationen làuft?



Zunàchst: Normal würdest Du ja die Anwendungsdomànen
in *einem* Prozess ausführen. Ich schàtze, Du meinst dieses Szenario.

Nun benutzt man für das Laden von Win32 DLLs
ja gàngigerweise das DllImport Konstrukt.
Dieses arbeitet intern über LoadLibrary.
Wenn über die "DLL Search Order"
die DLL gefunden wird, mapped das System
das DLL-Modul in den virtuellen Addressraum des
Prozesses und erhöht einen Referenz-Counter.
Ist die DLL schon im virtuellen Addressraum des
aufrufenden Prozesses gemappt, dann wird die
LoadLibrary Funktion nur einen Handle auf den
bereits geladenen DLL-Bereich zurückgeben und
erhöht den Referenz-Counter.

Antwort also:
wird *nicht* jedesmal neugeladen!


ciao Frank
Dipl. Inf. Frank Dzaebel [MCP, MVP C#]
http://Dzaebel.NET

Ähnliche fragen