发布COM组件

Nen*_*vic 5 .net c# outlook add-in pia

是否真的有必要从Office PIA释放COM组件,当你不再需要它们时,通过调用Marshal.ReleaseComObject(..)?

我在网上发现了关于这个主题的各种相互矛盾的建议.在我看来,由于Outlook PIA总是返回对其接口的新引用作为从其方法返回值,因此没有必要明确地释放它.我对吗?

Mik*_*lum 2

一般来说,使用 Microsoft Office,您确实需要显式发布您的引用,这可以分两个阶段安全地完成:

(1) 首先通过调用 GC.Collect() 然后调用 GC.WaitForPendingFinalizers() 释放所有不持有命名对象变量的次要对象。(如果涉及的对象可能具有终结器,例如使用 Visual Studio Tools for Office (VSTO) 时,则需要调用此两次。)

(2) 然后通过在每个对象上调用 Marshall.FinalReleaseComObject() 来显式释放持有命名变量的对象。

就是这样。:-)

我在上一篇文章中更详细地讨论了这一点,并提供了一个代码示例。