Exchange 上公用文件夹上的 ItemAdd 事件

2024-05-12

我在将事件处理程序附加到ItemAdd公共文件夹的事件。

问题是事件处理程序在几次后停止被调用 成功调用。

代码很简单。我有一个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);
    }
}

持续的谷歌搜索完成了它的工作。我找到了如何解决该问题。看来我并不是唯一经历过这种事的人。

我添加了对我想要跟踪的文件夹的 Items 集合的引用到全局范围:

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");
    }
{

现在它按预期工作了。虽然我不明白他们说这是一个垃圾收集问题的所有细节。我的事件处理程序最终被扔进了垃圾箱。在全局范围内对 Items 集合的引用可以防止这种情况发生。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Exchange 上公用文件夹上的 ItemAdd 事件 的相关文章

随机推荐