c# - नए हैंडलर को नए मेल आइटम में जोड़ा नहीं जा रहा है



event-handling add-in (1)

कॉम ऑब्जेक्ट जो इवेंट्स को उठाता है वह ज़िंदा होना चाहिए। आपके मामले में आप एकाधिक डॉट नोटेशन का उपयोग कर रहे हैं और कंपाइलर एक अंतर्निहित चर बनाता है; एक बार वे चर कचरा एकत्र किया जाता है, यह घटनाओं को फायरिंग बंद कर देगा मेल मदों के लिए ठीक है - आपको निरीक्षक को फंसाने की आवश्यकता होगी। ईवेंट बंद करें और आइटम को _mailItems सूची से हटा दें;

public partial class ThisAddIn
{
    private Inspectors _inspectors;
    private List<MailItem> _mailItems = new List<MailItem>();

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        _inspectors = Application.Inspectors;
        _inspectors.NewInspector += Inspectors_NewInspector;
    }

    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
        if (mailItem != null)
        {
            if (mailItem.EntryID == null)
            {
                _mailItems.Add(mailItem):
                mailItem.BeforeAttachmentAdd += mailItem_BeforeAttachmentAdd;
                //System.Windows.Forms.MessageBox.Show("Twice");
            }
        }
    }

    void mailItem_BeforeAttachmentAdd(Outlook.Attachment Attachment, ref bool Cancel)
    {
        Cancel = true;
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    }

मैं एक सरल Outlook 2010 ऐड-इन बनाने की कोशिश कर रहा हूं जो नई अनुलग्नक ईवेंट का जवाब देती है। नीचे दिए गए कोड केवल तब ही काम करता है जब मैं संदेश बॉक्स। लेकिन इसके साथ हटाया गया, यह ईवेंट हैंडलर जोड़ने के लिए नहीं दिखाई देता है कार्यक्रम के प्रवाह के बारे में मुझे क्या याद आ रहा है जिसका अर्थ है कि एक मॉडल संदेश बॉक्स घटना संचालकों की नियुक्ति को प्रभावित करता है?

public partial class ThisAddIn
{
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Application.Inspectors.NewInspector += Inspectors_NewInspector;
    }

    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
        if (mailItem != null)
        {
            if (mailItem.EntryID == null)
            {
                mailItem.BeforeAttachmentAdd += mailItem_BeforeAttachmentAdd;
                //System.Windows.Forms.MessageBox.Show("Twice");
            }
        }
    }

    void mailItem_BeforeAttachmentAdd(Outlook.Attachment Attachment, ref bool Cancel)
    {
        Cancel = true;
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    }




office-2010