我们最近发现了 Outlook 2007 事件的问题,导致它在Exchange连接丢失然后恢复时不会触发事件。如果您发生attach a listener到Folder.Items.ItemAdd
事件,则在Exchange从离线切换到在线后,事件将断开连接。为了重现这一点 - 我们移除了以太网电缆,以模拟短暂的连接丢失。
如果您不能保证在Exchange连接中断时触发事件,这实际上很难构建插件 - 在远程办公室操作时尤其常见。我们没有使用缓存交换模式。
有没有人对他们是一个变通方法,或者如何知道我们何时需要重新建立我们的事件监听器有任何反馈?使用缓存交换模式解决方案? 还是certain events which you just can't use reliably?
有doesn't appear to be an event trigger for when Exchange connectivity is lost。也许这里唯一的解决方法是使用某种计时器来实现可靠的事件行为。
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;
}
}
答案 0 :(得分:4)
对此问题进行疑难解答后,发现在您与Exchange失去连接后,某些事件未重新建立。 Application.Explorers.NewExplorer
和Application.Inspectors.NewInspector
等事件不受Exchange连接的影响,但Folder.Items.ItemAdd
是。Folder
。也许这是由于MAPIFolder.Items
继承了since we don't have an event to tell us when Exchange is unavailable。
重新建立事件触发器的唯一解决方案是定期重新连接事件( NewInspector
)或在用户启动的操作(例如{{3})期间重新附加事件}或MailItem.Send
。
MSDN Forums recommends you don't use the ItemAdd
event仅用于通过用户界面。