在線程中通過GetMessageFromID()獲取MAPI_E_UNKNOWN_ENTRYID我使用了Redemption(http://dimastr.com/redemption/home.htm)來開發我的Outlook AddIn。當我在第一次在STA線程(!)中嘗試GetMessageFromId時都很好,但是在下一次我得到MAPI_E_UNKNOWN_ENTRYID。我通過Redemption
RDOSession rdoSession = null;.
rdoSession = new RDOSession();
if (rdoSession != null)
{
if (!rdoSession.LoggedOn)
rdoSession.Logon(Consts.ProfileName);
if (rdoSession.LoggedOn)
{
for (int c = 1; c <= rdoStoresCnt; c++)
{
/* other code */
RDOMail mail = null;
try
{
mail = rdoSession.GetMessageFromID(entryID);
/* other code */
}
catch (Exception ex)
{
if (mail != null) Marshal.ReleaseComObject(mail); mail = null;
}
finally
{
if (mail != null) Marshal.ReleaseComObject(mail); mail = null;
}
}
}
}
我在做什麼錯?
感謝您的回覆。但是我不能將'RDOSession.MAPIOBJECT'設置爲'Namespace.MAPIOBJECT',因爲它可以工作到線程中,或者我錯了? –
謝謝。在調用'GetMessageFromId'時使用'RDOStore'得到了幫助。 –
請設置MAPIOBJECT屬性,不要在您的插件中創建新的會話。線程將會非常好 - 在主線程上存儲Namespace.MAPIOBJECT的值。在輔助線程上,創建RDOSession的新實例,將MAPIOBJECT屬性設置爲保存在主線程中的值。這樣,名稱空間OOM對象永遠不會在線程之間傳遞,只有MAPIOBJECT屬性中的IMAPISession(這非常好)。 –