Redemption RDOFolderSynchronizer不在BackgroundWorker Thread上工作

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

我是一个很长时间的Redemption编码器,有几个应用程序在后台线程上使用Redemption(但到目前为止还没有使用RDOFolderSynchronizer)。

我在backgroundworker线程上创建了一个新的rSession对象,我传递了MAPI对象。

 RedemptionCode rCodeBW = new RedemptionCode();
 rCodeBW.InitialiseRedemption(Globals.MapiObject, true);

在后台线程我试图使用RDOFolderSynchronizer,但当我运行它时,我尝试检索同步项时出错。错误是:

IMAPIFolder.OpenProperty(PR_CONTENTS_SYNCHRONIZER)返回MAPI_E_INTERFACE_NOT_SUPPORTED只有在线模式下的Exchange文件夹才支持同步。

如果我在主线程中运行相同的代码它工作正常,所以我认为''在线模式'问题并不是它失败的直接原因。

我使用的代码是:

var MAPI_NO_CACHE = 0x200;
var MAPI_BEST_ACCESS = 0x10;
RDOFolder2 rFolder2 = rSession.GetFolderFromID(entryID, storeID, MAPI_NO_CACHE ^ MAPI_BEST_ACCESS) as RDOFolder2;
RDOFolderSynchronizer synchronizer = rFolder2.ExchangeSynchronizer;
RDOSyncMessagesCollection syncItems = synchronizer.SyncItems(Globals.UserSettings.LastSyncDataEmailInbox);

任何建议都感激不尽。

outlook-redemption
1个回答
1
投票

是的,该接口必须在创建父MAPI会话(IMAPISession)的同一线程上使用。它是扩展MAPI中的ICS API限制。

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