当您不再需要调用Marshal.ReleaseComObject(..)时,是否真的有必要从Office PIA中释放COM组件?
我在网上找到了各种矛盾的建议。 在我看来,由于Outlook PIA始终将其接口作为其方法的返回值返回给新引用,因此不需要显式释放它。 我是对的吗?
这里有一些使用托管包装器的好方法在这里,值得一看。
如果您想要退出 Office 应用程序的实例,就需要这样做,如this post中所述。
在除了最简单的情况之外,很难做到完全正确。
我的经验表明,否则(至少Outlook),应用程序可能根本无法关闭。
但这又引发了另一个问题,因为看起来RCW是每个进程的,因此您可能会破坏其他一些插件,这些插件恰好引用相同的对象。
我已经发布了一个相关的问题here,但我仍然没有清晰的答案。一旦我知道更多信息,我将编辑此帖子。
关于 .Net/COM 互操作有一个简单的规则 - 当你不确定时,总是要释放(Release())。