繁体   English   中英

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

[英]ItemAdd event on a public folder on Exchange

我将事件处理程序附加到公用文件夹的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集合的引用可防止这种情况发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM