/ / Exécution du complément Outlook dans un fil séparé - multithreading, perspectives, complément

Exécution du complément Outlook dans un fil séparé - multithreading, perspectives, complément

Je développe Outlook Addin 2010. Lorsque vous cliquez sur un bouton du volet des tâches, les données du serveur sont récupérées et affichées dans la grille de données. Mais il a fallu 2 minutes pour récupérer les données et les perspectives se bloquent pendant ce temps.

S'il vous plaît, quelqu'un peut-il m'aider à exécuter le processus de récupération de données dans un thread séparé? où l'utilisateur peut utiliser Outlook lors de la récupération.

Réponses:

0 pour la réponse № 1

N'oubliez pas que le modèle d'objet Outlook ne peut pas êtreutilisé à partir de threads autres que le thread Outlook principal. Bien que cela puisse parfois fonctionner dans Outlook 2010 ou une version antérieure, Outlook 2013 lève une exception dès qu'il détecte que l'accès est effectué à partir d'un thread secondaire.

La première question est pourquoi votre code prend-il autant de temps? Devez-vous récupérer toutes ces données à la fois? Pouvez-vous faire cela en morceaux? Quel est ton code? Comment peut-il être optimisé?

Si le fil secondaire est votre seule option, vous devrez utiliser soit MAPI étendu (C ++ ou Delphi uniquement), soit Rachat (n'importe quelle langue) - sa Famille d'objets RDO est thread-safe. Pour un complément Outlook, vous pouvez stocker la valeur de Namespace.MAPIOBJECT à partir d’Outlook dans une variable, puis créer sur le thread secondaire une instance du RDOSession object et définissez sa propriété MAPIOBJECT sur la valeur extraite d’Outlook "s Namespace.MAPIOBJECT.