我应该动态加载非管理DLL后显式调用FreeLibrary

时间:2013-11-27 08:14:34

标签: c# pinvoke dllimport

我有一个static class NativeMethods包含用[DllImport]修饰的方法。 我想在NativeMethods静态构造函数中使用LoadLibrary动态加载DLL。

我应该在某些(进程/ AppDomain?)关闭事件上显式调用FreeLibrary吗? 是让OS在仅为崩溃保留的进程关闭时隐式执行清理还是正常情况?

1 个答案:

答案 0 :(得分:0)

你应该明确地这样做。正确的方法是创建一个包含库引用的类,它在其终结器中释放引用,就像使用任何其他长期存在的本机资源一样。

等待操作系统清理是很诱人的(它会在进程退出时清理它,不用担心),但是当你扩展软件时它会引入一些难以跟踪的问题,它可以从长远来看,许多问题(如挂线)会变得更糟。