Outlook 2016 VSTO 文件夹添加项目事件仅触发一次 [英] Outlook 2016 VSTO Folder Add item event fires only once

查看:53
本文介绍了Outlook 2016 VSTO 文件夹添加项目事件仅触发一次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个插件,我想在邮件发送成功后做点什么,我写:

I have an add-in, I want to do something when the email sent successful, I write:

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Outlook.Application application = this.Application;

        var sentMail = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
        sentMail.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
    }

    void Items_ItemAdd(object item)
    {
      // do something
    }

但是当我发送第一封电子邮件成功时,我的方法只运行一个,下一封电子邮件不会触发事件.

But my method runs only one when I sent first email success, the next emails not fires event.

请帮帮我!

推荐答案

您正在为隐式局部变量设置事件处理程序.一旦垃圾收集器释放该变量,就不会触发任何事件.您需要有一个全局(类)Items 变量:

You are setting an event handler on a implicit local variable. As soon as that variable is released by the Garbage Collector, no events will fire. You need to have a global (class) Items variable:

private Outlook.Items _items;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Outlook.Application application = this.Application;

        _items = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail).Items;
        _items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
    }

这篇关于Outlook 2016 VSTO 文件夹添加项目事件仅触发一次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆