2009-09-04 31 views
1

我正在使用VSTO處理Outlook 2007 AddIn,並且我的插件應該執行的操作之一是使用Web服務導入聯繫人。VSTO Outlook集成 - 大數據集上的同步速度變慢

該算法非常簡單:它向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可能會爲聯繫人建立索引,並且需要在創建新元素之後重建索引。由於我一直在創建新的元素,所以它需要經常重建索引,並且它必須索引越來越多的項目,這可能會降低速度。但這只是一個猜測。我在MSDN上沒有發現任何符號。

有誰知道如何解決這個問題?

回答

0

您是否準確指出哪條線正在放緩?使用一些主要方法的時間條目創建一個記錄,以確定它是(1)Web服務,(2)新的聯繫人對象,還是(3)保存聯繫人。

+0

這段代碼運行在一個循環中,所以相同的代碼一開始執行速度非常快,但後來越來越多地處理它。 – RaYell 2009-09-10 12:33:58