C# Outlook Event feuert nicht/ verliert Scope/ ist falsch gewrapped

  • C#

    C# Outlook Event feuert nicht/ verliert Scope/ ist falsch gewrapped

    Gelöst.

    Unten im Spoiler der Ursprungs Thread.

    Das Event wurde nicht falsch gewrapped, sondern gar nicht.
    Problem war die IsConnectedToExchange() Funktion, welche beim start des AddIns False geworfen hat
    und dadurch der Code verlassen wurde bevor das Event überhaupt gesetzt wurde.
    Ich habe nun Funktion an einer anderen und sinnvolleren stelle implementiert und nun geht alles...

    Spoiler anzeigen
    Hallo Leute,

    ich möchte in meinem C# Outlook AddIn einkommende Mails auf bestimmte Daten prüfen.
    Dafür habe ich für die Inbox Items einen EventHandler geschrieben.
    Der triggert allerdings nie und verliert meiner schätzung nach den Scope bzw. der Handler wird nicht richtig gewrapped von mir.

    Kann mir hier jemand helfen?

    Innerhalb der ThisAddIn Klasse, erhalten die Inbox Items einen itemAdd EventHandler
    (items_ItemAdd)
    Spoiler anzeigen

    C#-Quellcode

    1. private void items_ItemsAdd(object item)
    2. {
    3. try {
    4. if ( !( item is OutlookCOM.MailItem ) ) { return; } // go out if item is no mailitem
    5. var mailresponse = new MailResponse( Globals.ThisAddIn.Application ); // create MailResponse
    6. var itm = ( OutlookCOM.MailItem )item; // Cast the Inbox Item to a MailItem
    7. mailresponse.HandleVotingResponse( itm ); // Handle as VotingResult
    8. }
    9. catch (System.Runtime.InteropServices.COMException comEx) {
    10. System.Windows.Forms.MessageBox.Show(
    11. "Unknown Error occured while handling a received E-Mail.\r\n"
    12. + comEx.Message.ToString() );
    13. }
    14. catch (System.Exception ex) {
    15. System.Windows.Forms.MessageBox.Show(
    16. "Unknown Error occurend while handling a received E-Mail.\r\n"
    17. + ex.Message.ToString() );
    18. }
    19. }


    Diesen lasse ich von einer unter prozedur zuweisen
    (AddHandler)
    Spoiler anzeigen

    C#-Quellcode

    1. private void AddHandler()
    2. {
    3. _items = _inbox.Items;
    4. _items.ItemAdd += new OutlookCOM.ItemsEvents_ItemAddEventHandler( items_ItemsAdd );
    5. }



    Der Aufruf der AddHandler Methode passiert während dem ThisAddIn_StartUp Events
    (ThisAddIn_StartUp)
    Spoiler anzeigen

    C#-Quellcode

    1. private void ThisAddIn_Startup(object sender, System.EventArgs e)
    2. {
    3. var outlookmanager = new OutlookManager( Globals.ThisAddIn.Application ); // Check the Exchange Connection
    4. if ( !outlookmanager.IsConnectedToExchange() ) { return; } // If there is no Exchange connection go out
    5. try
    6. {
    7. _olNameSpace = Application.GetNamespace( "MAPI" ); // Get MAPI Namespace
    8. _inbox = _olNameSpace.GetDefaultFolder(
    9. OutlookCOM.OlDefaultFolders.olFolderInbox ); // Set _inbox Object for ItemAdd EventHandler
    10. AddHandler();
    11. }
    12. catch (System.Runtime.InteropServices.COMException comEx)
    13. { System.Windows.Forms.MessageBox.Show( comEx.Message.ToString() ); }
    14. catch (System.Exception ex)
    15. { System.Windows.Forms.MessageBox.Show( ex.Message.ToString() ); }
    16. }


    Und der Namespace, die Inbox und die Items sind als Member deklariert.
    Spoiler anzeigen

    C#-Quellcode

    1. private OutlookCOM.NameSpace _olNameSpace; // MAPI Namespace for Eventhandler
    2. private OutlookCOM.MAPIFolder _inbox; // Inbox Folder for Eventhandler
    3. private OutlookCOM.Items _items; // Inbox Fol[/spoiler]der MailItems for Eventhandler

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Petersilie“ ()