2011-12-19 44 views
5

我有一個事件處理程序附加到ItemAdd事件公用文件夾的問題。ItemAdd事件在Exchange

問題是事件處理程序停止在幾個 成功調用後被調用。

的代碼是微不足道的。我有一個ThisAddIn類創建一個對象而這又一個附加功能,在其構造函數ItemAdd事件。該功能只是彈出一個消息框。

請指點我正確的方向。我根本不明白在哪裏尋找錯誤。

謝謝你在前進, 阿納託利

下面是測試代碼,我嘗試運行:

public partial class ThisAddIn 
{ 
    internal static Outlook.Folder posts_folder = null; 
    private static test t; 

    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 

     t = new test(); 
    } 
{ 

class test 
{ 
    public test() 
    { 
     System.Windows.Forms.MessageBox.Show("Attaching..."); 
     ThisAddIn.posts_folder.Items.ItemAdd +=new Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd); 
    } 
    void Items_ItemAdd(object Item) 
    { 
     System.Windows.Forms.MessageBox.Show((Item as Outlook.PostItem).Subject); 
    } 
} 
+0

您可以發佈您的代碼片斷..你是如何聲明事件處理程序..你用什麼樣EventHandlerVar + =新someeventHandler或+ - someEventHandler您使用的一個代表,一個callcback?這很難說沒有看到你有什麼迄今感謝 – MethodMan 2011-12-19 13:57:27

回答

3

連續谷歌上搜索他的工作的。我發現如何解決這個問題。看來我並不是唯一一個經歷過它的人。

我加入了參考我想跟蹤全球範圍內的文件夾的項目集合:

internal static class stor 
{ 
    public static Outlook.Items i; 
} 

public partial class ThisAddIn 
{ 
    internal static Outlook.Folder posts_folder = null; 

    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     // the code for finding a posts_folder is omitted 

     stor.i = posts_folder.Items; 
     stor.i.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Posts_Add); 
    } 

    static void Posts_Add(object Item) 
    { 
     System.Windows.Forms.MessageBox.Show("New item"); 
    } 
{ 

現在按預期工作。 Alhough我不明白所有的細節,他們說,這是一個垃圾收集問題。我的事件處理程序最終被扔進垃圾箱。全球範圍內對Items集合的引用可防止發生這種情況。

+0

真棒,我坐在這裏尋找的正是這種東西...... – keynesiancross 2012-01-09 20:54:01

相關問題