ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
407
407
EMPFEHLEN
-
Tach !
ich benutze eine DLL (A) über eine statische Funktion. Diese statische Funktion hat eine eigene Klasse und steht allein in einer DLL (B), welche von einem Programm (C) aufgerufen wird.
Nun holt sich das Programm (C) die DLL (A) und ruft die statische Funktion der DLL (B) auf, welche auf (A) zugreift. Danach hat weder das Programm (C) einen Verweis auf die DLL (B) noch die statische Funktion in (B) einen Verweis auf die DLL (A).
Wieso kann das Programm (C) die DLL (A) nicht löschen ? Niemand braucht sie oder hat einen Verweis darauf ?
Anm: Kein Projekt hat eine lokale Kopie einer anderen DLL, alles ist nur über Verweise geregelt und zum Startzeitpunkt gibt es keine DLL (A).
Ansatz ?: Marshal.ReleaseComObject
Hat jemand eine Idee ?
MFG JJBGeändert von JJB (15.10.07 um 11:49 Uhr)
PS: Ja, ich habe gegoogelt und nein, ich will kein Viagra kaufen
PPS: Tod allen verketteten Suchmaschinen
-
Wirklich keiner ?
Irgendwer weiß doch sicherlich was ?!PS: Ja, ich habe gegoogelt und nein, ich will kein Viagra kaufen
PPS: Tod allen verketteten Suchmaschinen
-
21.10.07 16:59 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
versuch mal die Dll in einer eigenen AppDomain zu laden. Nach Verwendenung der Dll entlädst du die entsprechende AppDomain wieder via AppDomain.Unload(...);
http://www.codeproject.com/useritems/DotNet.asp
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
namespace mylocalNamespace { public class myLocalClass { [...] private myType CallFktFromExternalDll() { myType myReturnValue = new myType(); // Erstelle vorrübergehende Domain für AssemblyLoader und führe AssemblyLoader aus AppDomain aDomain = AppDomain.CreateDomain("myExternalNamespace"); AssemblyLoader aAssemblyLoader = (AssemblyLoader)aDomain.CreateInstanceAndUnwrap("mylocalNamespace", "mylocalNamespace.AssemblyLoader"); myReturnValue = aAssemblyLoader.LoadAndRun(myParameters); AppDomain.Unload(aDomain); return myReturnValue; } } //[Serializable] public class AssemblyLoader : MarshalByRefObject { public myType LoadAndRun(myParameterType myParameters) { Assembly aAssembly = Assembly.Load("myExternalNamespace"); Type aType = aAssembly.GetType("myExternalNamespace.myExternalClass"); MethodInfo aMethod = aType.GetMethod("myExternalFunction"); // Parameter und Funktionsaufruf object[] aParamArray = {myParameters}; myType myReturnValue = (myType)aMethod.Invoke(Activator.CreateInstance(aType), aParamArray); return myReturnValue; } } }
Die Funktion myExternalNamespace.myExternalClass.myExternalFunction() sollte static sein.
Thema geschlossenGeändert von JJB (29.02.08 um 08:12 Uhr)
PS: Ja, ich habe gegoogelt und nein, ich will kein Viagra kaufen
PPS: Tod allen verketteten Suchmaschinen
Ähnliche Themen
-
Wie gebe ich Spesen weiter?
Von port29 im Forum Buchführung, Recht, Steuer & Co.Antworten: 0Letzter Beitrag: 23.10.08, 18:28 -
Upload --> Wo gebe ich das Verzeichnis an?
Von eanst im Forum PHPAntworten: 2Letzter Beitrag: 18.10.05, 14:16 -
Domain ist frei aber ist eigentlich nicht frei !
Von bigtail im Forum Hosting & WebserverAntworten: 2Letzter Beitrag: 07.04.05, 23:35 -
Wie gebe ich das per while-schleife so aus?
Von glen im Forum PHPAntworten: 5Letzter Beitrag: 12.10.03, 20:42 -
Wie gebe ich Tausenderstellen aus?
Von scanline im Forum PHPAntworten: 1Letzter Beitrag: 10.06.02, 09:35





Zitieren

Login




