Question

J'écris un complément Outlook 2007. Tout ce que je fais est:

        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 n'écris rien dans les méthodes BeforeItemMoveFromInbox et BeforeItemMoveFromSpam, l'application a un comportement étrange. Une fois que je déplace certains mails, il n’effectue plus aucune action de déplacement pour un courrier particulier. Il semble qu'un courrier est bloqué et je ne peux tout simplement pas le déplacer. Après avoir effectué d'autres actions de déplacement, d'autres courriers sont bloqués et celui qui était précédemment bloqué peut être déplacé. L'idée est qu'après le blocage d'un courrier, il y aura toujours au moins un courrier qui ne peut pas être déplacé. En d'autres termes, au hasard, certaines actions en mouvement échouent. Je dois dire que je ne fais rien d'autre que déplacer des courriers d'un dossier à un autre et que je ne reçois aucun message d'erreur. J'ai également essayé de définir le paramètre cancel des gestionnaires d'événements BeforeItemMove sur false juste à la fin des méthodes, mais j'ai eu le même comportement.

Était-ce utile?

La solution

Vous l'avez 76mel. J'ai eu le même problème (le fait de connecter un dossier à l'événement BeforeItemMove a fait en sorte que lorsque je déplaçais un message hors de ce dossier, je ne pouvais pas le déplacer d'un autre dossier pendant un court laps de temps). .

L'ajout de Marshal.ReleaseComObject () à la fin du gestionnaire d'événements l'a parfaitement corrigé.

Autres conseils

Si je comprends la description de votre problème ci-dessus,

L'événement est déclenché si vous déplacez l'élément de la boîte de réception vers le dossier courrier indésirable, mais ne fonctionne pas si vous déplacez le même élément. ?? car vous devez accrocher l'événement pour le dossier alls que vous allez déplacer.

il se peut que vous deviez libérer l'objet dans votre gestionnaire d'événements Marshal.ReleaseComObject ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top