In C# müssen Assemblys, die mit Assembly.LoadFrom() geladen wurden, explizit entladen werden, um Speicher freizugeben und Ressourcen freizugeben wird von der Baugruppe gehalten.
Um eine Baugruppe zu entladen, können Sie verwenden die AppDomain.Unload-Methode. Diese Methode entlädt die angegebene AppDomain, die wiederum alle in dieser AppDomain geladenen Assemblys entlädt. Zum Beispiel:
// Create a new AppDomain and load the assembly AppDomain dom = AppDomain.CreateDomain("some"); AssemblyName assemblyName = new AssemblyName(); assemblyName.CodeBase = pathToAssembly; Assembly assembly = dom.Load(assemblyName); // Get the types from the assembly Type[] types = assembly.GetTypes(); // Unload the AppDomain AppDomain.Unload(dom);
Der Aufruf von assem = null allein garantiert nicht, dass die Assembly sofort entladen wird. Der Garbage Collector muss weiterhin ausgeführt werden, um die nicht referenzierten Ressourcen zurückzugewinnen. Sie können den Garbage Collector in C# nicht explizit aufrufen.
Sie können jedoch erzwingen, dass der Garbage Collector früher ausgeführt wird, indem Sie die GC.Collect-Methode aufrufen. Diese Methode löst einen Garbage-Collection-Zyklus aus und versucht, alle nicht erreichbaren Objekte zurückzugewinnen. Während GC.Collect in einigen Szenarien zur Leistungsverbesserung verwendet werden kann, wird im Allgemeinen nicht empfohlen, sich stark darauf zu verlassen, da es zu Pausen in Ihrer Anwendung führen kann.
Das obige ist der detaillierte Inhalt vonWie entlade ich mit Assembly.LoadFrom() geladene Assemblys in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!