Папка Outlook 2016 VSTO Добавление события события запускается только один раз - PullRequest
0 голосов
/ 24 мая 2018

У меня есть надстройка, я хочу что-то сделать, когда электронное письмо отправлено успешно, я пишу:

    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
    }

Но мой метод запускается только один раз, когда я отправил первое письмо успешно, следующие письма несобытие пожаров.

Пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 24 мая 2018

Вы устанавливаете обработчик событий для неявной локальной переменной.Как только эта переменная будет освобождена сборщиком мусора, никакие события не сработают.Вам нужна глобальная (классовая) переменная Items:

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