ホームページ >バックエンド開発 >C++ >C# で Assembly.LoadFrom() でロードされたアセンブリをアンロードする方法

C# で Assembly.LoadFrom() でロードされたアセンブリをアンロードする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-28 21:19:21271ブラウズ

How to Unload Assemblies Loaded with Assembly.LoadFrom() in C#?

Assembly.LoadFrom() でロードされたアセンブリのアンロード

C# では、Assembly.LoadFrom() を使用してロードされたアセンブリは、メモリを解放してリソースを解放するために明示的にアンロードする必要があります。アセンブリによって保持されています。

Assembly

アセンブリをアンロードするには、AppDomain.Unload メソッドを使用できます。このメソッドは、指定された AppDomain をアンロードします。これにより、その AppDomain 内にロードされたすべてのアセンブリがアンロードされます。次に例を示します。

// 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);

ガベージ コレクターの明示的な呼び出し

assem = null だけを呼び出しても、アセンブリがすぐにアンロードされるとは限りません。未参照のリソースを再利用するには、ガベージ コレクターを実行する必要があります。 C# ではガベージ コレクターを明示的に呼び出すことはできません。

ただし、GC.Collect メソッドを呼び出すことで、ガベージ コレクターを強制的に早く実行することができます。このメソッドはガベージ コレクション サイクルをトリガーし、到達不能なオブジェクトをすべて再利用しようとします。一部のシナリオでは GC.Collect を使用してパフォーマンスを向上させることができますが、アプリケーションに一時停止が発生する可能性があるため、GC.Collect に過度に依存することは一般的にお勧めできません。

以上がC# で Assembly.LoadFrom() でロードされたアセンブリをアンロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。