我正在使用vsto开发一个Outlook2007加载项,我的加载项应该做的一件事是使用Web服务导入联系人。
其算法非常简单:它要求Web服务提供需要同步的项目的标识符列表,然后提取它们并保存在Outlook中。
当我必须同步大量的记录(例如1000)时,就会出现问题。起初,它可以在15秒内快速同步100条记录,但记录越多,速度就越慢。获取900条记录后,需要大约一分半钟才能获取最后100条记录。
我很确定这不是我的代码的问题,因为它非常简单(类似于这样):
foreach (int i in idCollection) {
Contact c = service.GetContact(i);
Outlook.Contact contact = (Outlook.ContactItem)ThisAddIn.Application.
CreateItem(Outlook.OlItemType.olContactItem);
contact.FirstName = c.Name;
// set few more fields like this
contact.Save();
}
我认为一个解决方案是,Outlook可能正在为联系人编制索引,它需要在创建新元素后重新生成索引。因为我一直在创建新的元素,所以它需要经常重建索引,而且还必须索引越来越多的项,这可能会减慢索引的速度。但这只是一个猜测。我在材料安全数据表上没有发现任何符合性。
有人知道如何解决这个问题吗?