COM 加载项 > 正确处理对象

COM Add-In > Dispose objects correctly

在 Outlook 加载项中,对象似乎保存在内存中。因此,当加载项在 Outlook 中处于活动状态时,.eml 文件只能打开一次。第二次尝试时,我得到:

We can't open [filename]. It's possible the file is already open, or you don't have permission to open it ...

禁用加载项后,.eml 文件可以多次打开而不会出现任何问题。 在加载项代码中,我在多个位置放置了一个 Marshal.FinalReleaseComObject(obj) 但它没有帮助。代码相当长,分布在多个文件中。可能是我错过了一个版本。

有什么方法可以轻松解决问题并找出根本原因。

尝试注释掉你的大部分代码,并一次将其恢复几行,直到问题再次出现。

作为大锤解决方案,尝试在完成后调用 GC.Collect()。