首頁 > 後端開發 > C++ > 如何明確卸載使用 Assembly.LoadFrom() 載入的組件?

如何明確卸載使用 Assembly.LoadFrom() 載入的組件?

Mary-Kate Olsen
發布: 2025-01-04 09:41:35
原創
399 人瀏覽過

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

卸載使用Assembly.LoadFrom() 載入的程式集

為了檢查載入DLL 後執行GetTypes() 所需的時間使用Assembly .LoadFrom(),可能需要卸載並重新載入DLL。但是,將程序集引用設為 null 不足以卸載組件。

明確卸載程序集

要明確卸載程序集,可以使用 AppDomain.Unload () 方法。以下是一個範例:

// 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);
登入後複製

透過卸載 AppDomain,程式集及其所有資源將被垃圾收集器回收。

使用垃圾收集器

雖然將程式集引用設為 null 不會明確卸載程式集,但它會使其成為垃圾 收藏。垃圾收集器最終會回收分配給 Assembly 物件的資源,並且組件檔案將從記憶體中卸載。

但是,無法明確呼叫垃圾收集器或強制其立即運作。它是一個後台進程,在系統空閒時間時運行。因此,如果您想要明確卸載組件,建議使用 AppDomain.Unload()。

以上是如何明確卸載使用 Assembly.LoadFrom() 載入的組件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板