它是否需要在outlook对象模型中发布MAPIOBJECT?

问题描述 投票:0回答:1

在这里我使用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();
                 }            
    }
outlook-redemption
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.