要确定加载 DLL 后执行 GetTypes() 所花费的时间,您可以按照下面提到的步骤操作。
垃圾收集器 (GC) 负责回收未使用的内存。虽然将 Assembly 对象设置为 null 会触发 GC 将该对象标记为潜在的回收,但不能保证内存会立即释放。
以下代码演示了如何在单独的 AppDomain 中加载程序集,并在测量 GetTypes() 的时间后将其卸载:
// Define the assembly path string pathToAssembly = @"C:\temp\myassembly.dll"; // Create a new AppDomain AppDomain dom = AppDomain.CreateDomain("some"); // Load the assembly in the new AppDomain AssemblyName assemblyName = new AssemblyName(); assemblyName.CodeBase = pathToAssembly; Assembly assembly = dom.Load(assemblyName); // Measure the time for GetTypes() Stopwatch sw = Stopwatch.StartNew(); Type[] types = assembly.GetTypes(); sw.Stop(); double time1 = sw.Elapsed.TotalMilliseconds; // Unload the AppDomain to release the assembly AppDomain.Unload(dom);
通过卸载AppDomain,确保分配给加载的程序集的资源被释放,为后续加载和 GetTypes() 操作提供更准确的时间测量。
以上是如何高效卸载用Assembly.LoadFrom()加载的程序集?的详细内容。更多信息请关注PHP中文网其他相关文章!