是否需要在Outlook对象模型中释放MAPIOBJECT?

时间:2019-04-29 09:54:27

标签: outlook-redemption

在这里,我正在Outlook插件中使用兑换来运行单独的任务。

mapi MAPIOBJECT是否为com对象,是否需要按以下方式释放? 如果我释放mapi对象会怎样?

  public async Task SimpleTask(string entryId)
    {   
                 RDOMail rdoMail = null;
                 RDOSession rdoSession = null; 
                 try
                 {
                     var outlookApp = addinModule.OutlookApp;
                     var outlookNamespace = outlookApp.GetNamespace("MAPI");
                     var mapiObject = outlookNamespace.MAPIOBJECT;
                     rdoSession = RedemptionLoader.new_RDOSession();

                     if (rdoSession != null)
                     {
                         rdoSession.MAPIOBJECT = mapiObject;
                         bool loggedOn = rdoSession.LoggedOn;                     

                         if(!string.IsNullOrEmpty(entryId))
                         {
                             rdoMail = rdoSession.GetMessageFromID(entryId);
                             //...;
                             rdoMail.Save();
                         }
                     }
                 } 
                 catch (System.Exception ex)
                 {

                 }
                 finally
                 {
                     rdoMail.ReleaseComObject()
                     mapiObject.ReleaseComObject();
                     rdoSession.ReleaseComObject();
                     outlookNamespace.ReleaseComObject();
                 }            
    }

1 个答案:

答案 0 :(得分:0)

是的,它是一个COM对象。 OOM将其表示为IUnknown。它是IMAPISession(源自IUnknown)。