Frage

Ich schreibe eine Outlook 2007 Addin. Alles, was ich tue, ist:

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

Und das Problem ist, dass, auch wenn ich nichts in BeforeItemMoveFromInbox und BeforeItemMoveFromSpam Methoden schreibe, die Anwendung ein seltsames Verhalten hat. Nachdem ich einige Mails bewege, führt es einfach nicht mehr Bewegungsaktion für eine bestimmte E-Mail. Es scheint, dass eine Mail blockiert und ich kann einfach verschieben Sie es nicht. Nach der Durchführung der anderen beweglichen Aktionen andere Mails blockiert werden und die eine, die zuvor blockiert wurde, kann verschoben werden. Die Idee ist, dass nach einer Mail blockiert wird, wird es immer mindestens eine Mail, die nicht verschoben werden kann. Mit anderen Worten zufällig versagen einig bewegten Aktionen. Ich muss sagen, dass ich nichts tue anderes als E-Mails von einem Ordner in einen anderen zu bewegen und dass ich keine Fehlermeldung. Ich habe auch versucht die Abbruchparameter BeforeItemMove Event-Handler auf false zu setzen nur am Ende der Methoden, aber ich habe das gleiche Verhalten.

War es hilfreich?

Lösung

Du hast es 76mel. Ich hatte das gleiche Problem (nur einen Ordner mit dem BeforeItemMove Ereignisse Einhaken machte es so, dass, wenn ich aus diesem Ordner eine Nachricht bewegt, ich es nicht von den neuen Ordnern verschieben könnte noch einen anderen Ordner für eine kleine Menge von Zeit) .

Hinzufügen Marshal.ReleaseComObject () bis zum Ende der Event-Handler festgelegt es perfekt.

Andere Tipps

Wenn ich verstehe Ihr Problem obige Beschreibung

Die Veranstaltung Brennen, wenn Sie die Artikel aus Posteingang zu Spam-Ordner zu verschieben, aber es funktioniert nicht, wenn Sie das gleiche Element bewegen zurück. ?? wie Sie das Ereignis für all Ordner Haken, den Sie von bewegen.

was kann passieren, dass Sie das Objekt in Ihren Event-Handler freigeben müssen, können Marshal.ReleaseComObject ()

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top