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 中国語 Web サイトの他の関連記事を参照してください。