Heim > Backend-Entwicklung > C++ > Wie kann ich mit Assembly.LoadFrom() geladene Baugruppen explizit entladen?

Wie kann ich mit Assembly.LoadFrom() geladene Baugruppen explizit entladen?

Mary-Kate Olsen
Freigeben: 2025-01-04 09:41:35
Original
334 Leute haben es durchsucht

How Can I Explicitly Unload Assemblies Loaded with Assembly.LoadFrom()?

Entladen von Assemblys, die mit Assembly.LoadFrom() geladen wurden

Um zu überprüfen, wie lange es dauert, GetTypes() nach dem Laden einer DLL auszuführen Bei Assembly.LoadFrom() muss möglicherweise die DLL entladen und neu geladen werden. Allerdings reicht es nicht aus, die Assembly-Referenz auf null zu setzen, um die Assembly zu entladen.

Assemblys explizit entladen

Um eine Assembly explizit zu entladen, können Sie AppDomain.Unload verwenden ()-Methode. Hier ist ein Beispiel:

// Create a separate AppDomain to load the assembly
AppDomain dom = AppDomain.CreateDomain("some");

// Load the assembly into the new AppDomain
Assembly assembly = dom.LoadFrom(filePath);

// Get the types from the assembly
Type[] types = assembly.GetTypes();

// Unload the AppDomain, which will unload the assembly
AppDomain.Unload(dom);
Nach dem Login kopieren

Durch das Entladen der AppDomain werden die Assembly und alle ihre Ressourcen vom Garbage Collector zurückgefordert.

Verwendung des Garbage Collectors

Während das Festlegen der Assembly-Referenz auf Null die Assembly nicht explizit entlädt, wird sie dadurch für die Garbage Collection geeignet. Der Garbage Collector wird schließlich die dem Assembly-Objekt zugewiesenen Ressourcen zurückfordern und die Assembly-Dateien werden aus dem Speicher entladen.

Es gibt jedoch keine Möglichkeit, den Garbage Collector explizit aufzurufen oder seine sofortige Ausführung zu erzwingen. Es handelt sich um einen Hintergrundprozess, der ausgeführt wird, wenn das System inaktiv ist. Daher wird empfohlen, AppDomain.Unload() zu verwenden, wenn Sie eine Assembly explizit entladen möchten.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Assembly.LoadFrom() geladene Baugruppen explizit entladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage