2012-09-26 48 views
3

我們最近發現了一個問題,當Outlook Exchange 2007連接丟失,然後恢復時,它不會觸發事件。如果attach a listenerFolder.Items.ItemAdd事件,則Exchange在脫機切換到聯機後,該事件將斷開連接。爲了重現這一點 - 我們刪除了我們的以太網電纜,以模擬短暫的連接丟失。當Exchange失去連接時,Outlook事件不會觸發

如果無法保證Exchange連接發生故障時會觸發事件 - 尤其是在遠程辦公室運行時常見的事件,那麼確實會使構建插件變得困難。我們沒有使用緩存交換模式。

有沒有人對他們是否是解決方法有任何反饋,或者如何知道我們何時需要重新建立我們的事件監聽器?正在使用緩存交換模式的解決方案? 還是有certain events which you just can't use reliably

There 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; 
    } 
} 

回答

4

解決此問題後,人們發現有您失去與交流後不重新建立某些事件。諸如Application.Explorers.NewExplorerApplication.Inspectors.NewInspector之類的事件不受Exchange連接的影響,但是Folder.Items.ItemAdd是。也許這是由於Folder的繼承MAPIFolder.Items

唯一的解決辦法,以重新建立事件觸發是週期性地重新連接事件(since we don't have an event to tell us when Exchange is unavailable)或重新附接期間的用戶發起的動作,諸如NewInspectorMailItem.Send的事件。

MSDN Forums recommends you don't use the ItemAdd event僅作爲打算通過UI使用。

相關問題