是否需要在 outlook 对象模型中释放 MAPIOBJECT?
does it need to release MAPIOBJECT in outlook object model?
我在这里 运行 使用 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();
}
}
是的,它是一个 COM 对象。 OOM表示为IUnknown
。它是 IMAPISession
(派生自 IUnknown)。
我在这里 运行 使用 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();
}
}
是的,它是一个 COM 对象。 OOM表示为IUnknown
。它是 IMAPISession
(派生自 IUnknown)。