2009-09-04 8 views
1

Je travaille sur un AddIn Outlook 2007 en utilisant VSTO et l'une des choses que mon addin est censé faire est d'importer des contacts en utilisant le service web.Intégration de VSTO Outlook - La synchronisation ralentit sur de grands ensembles de données

L'algorithme pour cela est très simple: il demande au service Web une liste d'identifiants d'éléments qui doivent être synchronisés, puis il les récupère et les enregistre dans Outlook.

Le problème se produit lorsque je dois synchroniser un grand nombre d'enregistrements (1000 par exemple). Au début, il est assez rapide de synchroniser 100 enregistrements en 15 secondes, mais plus il y a d'enregistrements, plus il est lent. Après l'extraction de 900 dossiers, il a besoin d'environ une minute et demie pour aller chercher la dernière 100.

Je suis sûr que ce n'est pas le problème de mon code, car il est juste très simple (quelque chose comme ça):

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(); 
} 

Une solution que je pense est que Outlook peut indexer des contacts et il doit reconstruire l'index après la création d'un nouvel élément. Puisque je crée de nouveaux éléments tout le temps nécessaire pour reconstruire l'index très souvent et aussi il doit indexer de plus en plus d'éléments et cela pourrait le ralentir. Mais ce n'est qu'une supposition. Je n'ai trouvé aucune conformation sur cela dans MSDN.

Est-ce que quelqu'un sait comment résoudre ce problème?

Répondre

0

Avez-vous identifié la ligne qui ralentit? Créez un journal avec des entrées de temps autour de certaines des méthodes principales pour déterminer si c'est (1) le service Web, (2) nouvel objet contact, ou (3) enregistrer le contact.

+0

Ce code est exécuté en boucle, donc le même code est exécuté très rapidement au début, mais plus tard, il prend de plus en plus de temps pour le traiter. – RaYell

Questions connexes