Outlook 2016 VSTO 文件夹添加项目事件仅触发一次 [英] Outlook 2016 VSTO Folder Add item event fires only once
本文介绍了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屋!
查看全文