C# WPF 删除加载的DLL文件:解决"访问被拒绝"问题
"C# WPF 删除加载的DLL文件:解决"访问被拒绝"问题"\n\n本文介绍了在C# WPF中使用LoadFile方法加载DLL文件后,删除该文件时遇到的"访问被拒绝"错误,并提供了解决方法:使用Assembly.LoadFrom加载DLL文件,避免锁定,并通过卸载DLL文件和注册空事件处理程序来释放锁定,从而成功删除DLL文件。\n\n在使用LoadFile方法加载DLL文件后,如果尝试删除该DLL文件,可能会遇到访问被拒绝的问题。这是因为在加载DLL文件时,它会被锁定并保持在内存中,直到应用程序关闭。这种锁定是为了确保其他进程或线程不会更改或删除正在使用的DLL文件。\n\n要解决这个问题,您可以在加载DLL文件之前,使用Assembly.LoadFrom方法来加载它。这样可以避免DLL文件被锁定,从而允许您在加载后删除它。\n\n下面是一个示例代码,演示如何加载DLL文件并删除它:\n\ncsharp\nstring dllPath = \"path_to_your_dll.dll\";\n\n// 加载DLL文件\nAssembly assembly = Assembly.LoadFrom(dllPath);\n\n// 读取DLL文件中的内容\n// ...\n\n// 卸载DLL文件\nassembly = null;\nAppDomain.CurrentDomain.AssemblyResolve += (sender, args) => null;\nFile.Delete(dllPath);\n\n\n通过将DLL文件加载到内存中,然后将其设置为null,并注册一个空的AssemblyResolve事件处理程序,可以释放对DLL文件的锁定。然后,您可以使用File.Delete方法删除该DLL文件。\n\n请注意,删除正在使用的DLL文件可能会导致应用程序出现问题。确保在删除之前不再需要该DLL文件,并且没有其他代码依赖于它。
原文地址: https://www.cveoy.top/t/topic/py1C 著作权归作者所有。请勿转载和采集!