Outlook VSTO - 更新定期AppointmentItem Parent

时间:2017-03-24 13:32:47

标签: c# com vsto office-interop outlook-addin

我正在使用Outlook加载项(插件),我基本上使用Outlook约会项目(Outlook.AppointmentItem)。

每当有人创建,保存或更新定期约会项目的出现时,我需要获取主AppointmentItem(父项)并添加或更新UserProperty

直到这里,它或多或少都在起作用。这意味着我得到了父母,我可以操纵他的UserProperties,但每次都不起作用。

如果定期约会有5次出现,并且每次引用我更新了一些内容,我希望修改父级的UserProperties 5次。但这不起作用,有时父母也是他的旧“状态”。

从技术上讲,在Item_Write我得到了父母并更改了他的UserProperties。就在Item_Write的最后一个括号之前,我检查了父级的UserProperties,它们包含了我所期待的内容。但是在“关闭”方法中,当我检查父级是否仍然包含预期的Item_Write时,在UserProperties之后调用的方法我看到它们尚未更新且它们仍处于相同的状态那之前。

经过一番研究,我看到很多人(甚至是Msdn)说我应该使用Marshal.ReleaseComObject()。我试过了,现在每次调用它时我都会释放父(和其他COM对象)。也许我没有很好地使用它,因此,它仍然不起作用。

问题似乎出现在Item_WriteClose之间。离开Item_Write后,UserProperties可以,但是当我输入Close时,他们就不再存在了。 有没有人有类似的问题?

我应该在Marshal.FinalReleaseComObject()结尾之前使用Item_Write吗?

我认为它更好,或者通过查看我的代码的某些部分来更容易理解发生了什么,只需要问。

1 个答案:

答案 0 :(得分:0)

这听起来肯定与不正确释放物体有关。阅读AppointmentItem.GetRecurrencePattern方法文档中的备注部分,因为它完美地描述了您的情况:https://msdn.microsoft.com/en-us/library/office/ff868441.aspx