J'écris un addin Outlook 2007. Tout ce que je fais est:Add-in Outlook 2007 - Problème lors de l'utilisation de l'événement BeforeItemMove
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.Folder root;
//creates Spam folder if it dosen't exist
if (!SpamFolderExist())
{
CreateSpamFolder();
}
root = (Outlook.Folder)this.Application.Session.DefaultStore.GetRootFolder();
//set BeforeItemMove event for spam and inbox folders
spamFolder = (Outlook.Folder)root.Folders["Spam"];
inboxFolder = (Outlook.Folder)this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
spamFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(BeforeItemMoveFromSpam);
inboxFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(BeforeItemMoveFromInbox);
//set new mail event
this.Application.NewMail += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_NewMailEventHandler(OnNewMail);
}
Et le problème est que, même si je suis en train d'écrire rien dans les méthodes BeforeItemMoveFromInbox et BeforeItemMoveFromSpam, l'application a un comportement étrange. Après avoir déplacé certains mails, il ne fait plus aucune action de déplacement pour un mail particulier. Il semble que le courrier est bloqué et que je ne peux pas le déplacer. Après avoir effectué d'autres actions de déplacement, les autres mails sont bloqués et celui qui a été précédemment bloqué peut être déplacé. L'idée est qu'une fois qu'un mail est bloqué, il y aura toujours au moins un mail qui ne pourra pas être déplacé. En d'autres termes, certaines actions en mouvement échouent au hasard. Je dois dire que je ne fais rien d'autre que de déplacer des mails d'un dossier à un autre et que je n'obtiens aucun message d'erreur. J'ai également essayé de définir le paramètre cancel des gestionnaires d'événements BeforeItemMove à false juste à la fin des méthodes mais j'ai eu le même comportement.
Oublier Marshal.ReleaseComObject() est un problème courant lors de l'utilisation de COM et Outlook – 76mel