我有.NET表单,其中使用了多个用户控件,在用户控件中控制了多个dll。该应用程序是vba和.NET表单的组合,我们通过COM接口从VBA打开.NET表单。
问题是,当我关闭表单时,它不会释放/取消引用表单中使用的dll,因为每当我再次打开表单时它会不断增加MSACCESS.exe
进程的大小。我尝试拨打GC.Collect
和GC.WaitForPendingFinalizers()
,但未解决此问题。
如何在表格关闭期间取消参考这些dll?
答案 0 :(得分:1)
听起来更像是在创建非托管对象,而在表单关闭时不释放它们。
如果是这种情况,那么您需要跟踪非托管对象并在OnFormClosed中释放它们。
答案 1 :(得分:0)
如何在表格关闭期间取消参考这些dll?
您无法卸载加载到.NET AppDomain
中的程序集,但它也只加载一次 - >当"重新加载表单"。
我猜你的代码中有一些内存泄漏:你是否尝试使用内存分析器将其固定下来?