小编Kin*_*njo的帖子

C# VSTO Outlook 插件:不释放 MailItem 对象的可能影响是什么

Marshal.ReleaseComObject在 Outlook 中与 MailItems 交互时使用的重要性是什么?

我参考了在https://docs.microsoft.com/en-us/visualstudio/vsto/walkthrough-creating-your-first-vsto-add-in-for-outlook?view创建 C# VSTO Outlook 插件的演练 =vs-2019

他们有一个修改现有选定邮件项目主题和正文的示例。

void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
{
    Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
    if (mailItem != null)
    {
        if (mailItem.EntryID == null)
        {
            mailItem.Subject = "This text was added by using code";
            mailItem.Body = "This text was added by using code";
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

该示例结束时没有提及使用 释放邮件项目对象Marshal.ReleaseComObject

但在https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.releasecomobject?view=netframework-4.8的 .Net API 参考中,他们提到:

您应该使用此方法及时或在必须以特定顺序释放对象时释放包含对资源的引用的基础 COM 对象。

因此,如果我们未能在我们引用的 MailItem 上使用 Marshal.ReleaseComObject,显然会有一些后果?

是否存在不使用 Marshal.ReleaseComObject 会导致问题的特定用例?

谢谢

c# outlook vsto office-addins outlook-addin

2
推荐指数
1
解决办法
338
查看次数

标签 统计

c# ×1

office-addins ×1

outlook ×1

outlook-addin ×1

vsto ×1