使用 MAPITable 优化批处理 Outlook 约会处理的可能方法

Possible ways to optimize batch Outlook appointment processing with MAPITable

我正在使用一个组件将我们自己的约会数据与 Outlook 中选定日历文件夹中的约会数据同步。

当我们的约会第一次同步到 Outlook 时,我们约会的 ID 存储在新创建的 Outlook 约会的用户属性中。

因此,在将每个约会同步到 Outlook 之前,我们的代码必须检查 Outlook 中是否已经存在具有其 ID 的约会。该代码当前正在遍历 Folder.Items 集合并查看每个集合的 UserProperties,这显然非常慢。

我发现 this Whosebug question,这表明我可以查询 MAPITable 以首先过滤掉没有用户属性的约会。

但是,随着越来越多的约会同步到 Outlook 超时,过滤的结果也会变得相当大。

有人知道是否有更快的方法来浏览 Outlook 文件夹中所有约会的用户属性吗?

我在使用 olText 类型的 'MyUserProperty' UserProperty 过滤约会时遇到了类似的问题。我使用了一个 DASL 查询,该查询使用 UserProperty 过滤了文件夹项目。

string myPropertyValue = "SomeID";
filter = "@SQL=\"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MyUserProperty/0x0000001F\" = '" + myPropertyValue + "' ";
filteredAppointment = myFolderItems.Find(filter);

MSDN 文档:Filtering a Custom Field

使用项目 class 的 Find/FindNext or Restrict 方法,而不是整合文件夹中的所有项目。

查看以下说明如何使用它们的文章: