Problème de fermeture d'Outlook après exécution d'un addin.

Résolu
majenior Messages postés 2 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 16 mars 2005 - 15 mars 2005 à 09:40
majenior Messages postés 2 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 16 mars 2005 - 16 mars 2005 à 13:09
Bonjour,

Je suis en train de développer un composant Outlook (addin).Il fonctionne de la manière suivante :
- Il n'est pas chargé au démarage d'outlook mais par programmation
- Mon composant ouvre une nouvelle fenetre que g créé en VB.NET qui me permet d'agir sur outlook.
- l'addin est connecté à outlook par un programme distant, appelle une méthode de l'addin puis le déconnecte.


If
Not addin.Connect
Then addin.Connect =
True
addin.Object.GetType.InvokeMember("ShowForm", BindingFlags.DeclaredOnly
Or BindingFlags.Public
Or BindingFlags.Instance
Or BindingFlags.InvokeMethod,
Nothing, addin.Object, args)
If addin.Connect
Then addin.Connect =
False
app.Quit()



- mon programme distant lannce outlook par automation puis le ferme.

Voici les symptomes de mon problème :
- Mon programme connecte bien l'addin.
- la fenetre est bien lancée et est bien interactive.
- Le la ferme, mon programme distant reprend la main et ferme outlook sans aucun problème.
- tant que j'agis seulemenent sur l'interface graphique, à la fin, Outlook se ferme bien.
- Si j'accède au dossier contact (par exemple : applicationObject.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderContacts)
), à la fin outlook se décharge bien mais ne se ferme plus. il reste présent dans le gestionnaire de programme(proccessus). et je suis obligé de le tuer à la main.
j'ai lu pas mal de chose sur les composant saddin et plus précisément qu'il fallait vérifier que tous les objets créés sont bien détruit avant de le deconnecter.Mais là, je ne créé rien mais j'accède à un élément de outlook.
Je ne comprends pas pourquoi , l'appel de cette simple ligne empèche outlook de se fermer entièrement.

merci pour quiquonque pourra m'aider


Majenior

1 réponse

majenior Messages postés 2 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 16 mars 2005
16 mars 2005 à 13:09
J'ai trouvé le problème . Quand on accède à un objet de outlook, il y a un compteur de référence qui s'incrémente automatiquement. Qd outlook se ferme, ce compteur de décrémente au fur et à mesure que les objets sont détruits. Outlook reste ouvert tant que tous les compteurs de ses fichiers sont différents de 0.


Lorsqu'on accède à un objet outlook, il faut obligatoirement le fermer à la fin (du programe ou du block de programmation). pour décrémenter ce compteur de références il faut utiliser une méthode spéciale : Marshal.ReleaseComObject(mon_objet_outlook)


Majenior
3
Rejoignez-nous