首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# OutlookCalendar插件-如何检测定期系列中会议的删除

C# OutlookCalendar插件-如何检测定期系列中会议的删除
EN

Stack Overflow用户
提问于 2019-05-23 06:08:24
回答 1查看 262关注 0票数 0

我正在为Outlook Calendar编写一个C#插件,以便将约会映射到另一个系统。使用EventHandlers (例如MAPIFolderEvents_12_BeforeItemMoveEventHandlerItemsEvents_ItemChangeEventHandler),我可以检测项目的移动和删除,前提是它们是单个项目或完整的循环系列。

问题是,我似乎无法检测到系列中删除了的会议。(我认为这是因为它是对校长任命的更改,而不是删除)。EventHandler查找将项目移动到DeletedItems文件夹,但在这种情况下不会发生这种情况。我在文件夹上有一个ItemChange EventHandler,但它似乎很少触发。

calendarFolder = (Outlook.Folder)Application.Session.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);

calendarFolder.Items.ItemChange += new ItemsEvents_ItemChangeEventHandler(calendarFolder_ItemsChange);

calendarFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(calendarFolder_BeforeItemMove);

有没有人能给我提个建议,让我知道该怎么做?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 07:10:48

您是对的,只有当定期活动的实例被删除或修改时,才会触发ItemChange事件-删除操作仅记录在主约会上的重复blob中(您可以在OutlookSpy中查看其数据-选择约会,单击IMessage按钮,选择名为PT_BINARY的AppointmentRecur属性),并且发生的更改将保存为主约会上的附件。

但是,在代码中很少触发ItemChange的原因是因为垃圾回收器会释放触发事件(项)的对象。您需要将calendarFolder.Items存储在类级别的专用变量中(这样,只要您的类是活动的,GC就不会接触它),并在该变量上设置一个事件处理程序

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56265622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档