توقعات 2007 الوظيفة الإضافية - مشكلة باستخدام الحدث BeforeItemMove

StackOverflow https://stackoverflow.com/questions/821471

سؤال

وأنا أكتب على الدين توقعات 2007. كل أقوم به هو:

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

والمشكلة هي أنه حتى لو أنا أكتب شيئا في أساليب BeforeItemMoveFromInbox وBeforeItemMoveFromSpam، وتطبيق لديه السلوك الغريب. بعد سأنتقل بعض الرسائل، فقط لانه لم ينفذ أي إجراء مزيد من التحرك للحصول على البريد معين. ويبدو أن البريد تم منع وأنا فقط لا يمكن تحريكه. بعد تنفيذ الإجراءات المتحركة الأخرى يتم حظر الرسائل الأخرى وتلك التي منعت سابقا يمكن نقلها. والفكرة هي أنه بعد يتم حظر البريد وسوف يكون دائما الإلكتروني واحد على الأقل التي لا يمكن نقلها. وبعبارة أخرى بشكل عشوائي بعض الإجراءات تتحرك تفشل. يجب أن أقول أنني لا تفعل أي شيء آخر من الانتقال الرسائل من مجلد إلى آخر، وأن أحصل على أية رسالة خطأ. كما أنني حاولت تعيين إلغاء المعلمة من معالجات الأحداث BeforeItemMove إلى false فقط في نهاية الطرق لكني حصلت على نفس السلوك.

هل كانت مفيدة؟

المحلول

هل حصلت عليه 76mel. كان لي نفس المشكلة (مجرد تركيب مجلد إلى الحدث BeforeItemMove جعلت حتى عندما انتقلت رسالة من هذا المجلد، وأنا لا يمكن أن تتحرك من مجلد جديد على بعد مجلد آخر لكمية صغيرة من الوقت) .

وإضافة Marshal.ReleaseComObject () إلى نهاية معالج الأحداث ثابتة تماما.

نصائح أخرى

إذا أنا أفهم وصف مشكلتك أعلاه،

ويتم إطلاق الحدث إذا قمت بنقل عنصر من البريد الوارد إلى مجلد البريد المزعج لكنها لا تعمل إذا قمت بنقل نفس المادة إلى الخلف. ؟؟ لديك لربط الحدث للمجلد استرجاع الألياف التي سوف الانتقال منه.

وما يمكن أن يحدث هو أنك قد تضطر إلى تحرير كائن في معالج الحدث Marshal.ReleaseComObject ()

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top