tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
424
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von JJB
    JJB JJB ist offline Cogito ergo brumm
    Registriert seit
    Jan 2004
    Ort
    Stuttgart
    Beiträge
    261
    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 JJB
    Geä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

  2. #2
    Avatar von JJB
    JJB JJB ist offline Cogito ergo brumm
    Registriert seit
    Jan 2004
    Ort
    Stuttgart
    Beiträge
    261
    Wirklich keiner ?
    Irgendwer weiß doch sicherlich was ?!
     
    PS: Ja, ich habe gegoogelt und nein, ich will kein Viagra kaufen
    PPS: Tod allen verketteten Suchmaschinen

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    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ß Tom
     
    Java 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

  4. #4
    Avatar von JJB
    JJB JJB ist offline Cogito ergo brumm
    Registriert seit
    Jan 2004
    Ort
    Stuttgart
    Beiträge
    261
    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 geschlossen
    Geä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

  1. Wie gebe ich Spesen weiter?
    Von port29 im Forum Buchführung, Recht, Steuer & Co.
    Antworten: 0
    Letzter Beitrag: 23.10.08, 18:28
  2. Antworten: 2
    Letzter Beitrag: 18.10.05, 14:16
  3. Domain ist frei aber ist eigentlich nicht frei !
    Von bigtail im Forum Hosting & Webserver
    Antworten: 2
    Letzter Beitrag: 07.04.05, 23:35
  4. Antworten: 5
    Letzter Beitrag: 12.10.03, 20:42
  5. Wie gebe ich Tausenderstellen aus?
    Von scanline im Forum PHP
    Antworten: 1
    Letzter Beitrag: 10.06.02, 09:35