关闭Winform时取消关注dll

时间:2015-02-04 12:54:26

标签: c# .net winforms vba dll

我有.NET表单,其中使用了多个用户控件,在用户控件中控制了多个dll。该应用程序是vba和.NET表单的组合,我们通过COM接口从VBA打开.NET表单。

问题是,当我关闭表单时,它不会释放/取消引用表单中使用的dll,因为每当我再次打开表单时它会不断增加MSACCESS.exe进程的大小。我尝试拨打GC.CollectGC.WaitForPendingFinalizers(),但未解决此问题。

如何在表格关闭期间取消参考这些dll?

2 个答案:

答案 0 :(得分:1)

听起来更像是在创建非托管对象,而在表单关闭时不释放它们。

如果是这种情况,那么您需要跟踪非托管对象并在OnFormClosed中释放它们。

答案 1 :(得分:0)

  

如何在表格关闭期间取消参考这些dll?

您无法卸载加载到.NET AppDomain中的程序集,但它也只加载一次 - >当"重新加载表单"。

时,内存不会增加

我猜你的代码中有一些内存泄漏:你是否尝试使用内存分析器将其固定下来?