在这里我使用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)。