我们最近注意到Outlook 2007事件的一个问题,导致它在 Exchange 连接丢失然后恢复时不触发事件。如果您将侦听器附加到Folder.Items.ItemAdd
事件,则在 Exchange 从脱机切换到联机后,该事件将断开连接。为了重现这一点 - 我们移除了我们的以太网电缆,以模拟短暂的连接丢失。
如果您不能保证在 Exchange 连接中断时会触发事件,那么这确实会使构建插件变得困难 - 在远程办公室操作时尤其常见。我们没有使用缓存交换模式。
是否有人对他们是否是一种解决方法有任何反馈,或者如何知道我们何时需要重新建立我们的事件侦听器?使用缓存交换模式是一种解决方案吗?或者是否有某些事件您不能可靠地使用?
Exchange 连接丢失时似乎没有事件触发器。也许这里唯一的解决方法是使用某种计时器来实现可靠的事件行为。
public partial class ThisAddIn
{
Outlook.Items sentItems;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.Folder sentFolder = ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
sentItems = sentFolder.Items;
sentItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(SentItems_ItemAdd);
}
void SentItems_ItemAdd(object Item)
{ // breakpoint never hit after Exchange connectivity is lost
Outlook.MailItem mailItem = Item as Outlook.MailItem;
}
}