Outlook VSTO - 更新定期约会项目 Parent

Outlook VSTO - Update Periodic AppointmentItem Parent

我正在使用 Outlook Add-In(插件)并且基本上是在使用 Outlook 约会项目 (Outlook.AppointmentItem)。

每次有人创建、保存或更新定期约会项目时,我需要获取主要 AppointmentItem(parent)并添加或更新 UserProperty .

直到这里,它或多或少都在工作。这意味着我得到 parent 并且我可以操纵他的 UserProperties 但它不是每次都有效。

如果定期约会出现 5 次,并且对于每个引用我都会更新一些内容,我希望修改 parent 的 UserProperties 5 次。但这不起作用,有时 parent his old "state".

从技术上讲,在 Item_Write 中我得到了 parent 并更改了他的 UserProperties。就在 Item_Write 的最后一个括号之前,我检查了 parent 的 UserProperties,它们包含我所期望的内容。但是在 Item_Write 之后调用的 "Close" 方法中,当我检查 parent 是否仍然包含预期的 UserProperties 时,我发现它们没有被更新并且它们还是和以前一样的状态。

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

问题似乎出现在 Item_WriteClose 之间。离开 Item_Write 之后,UserProperties 还可以,但是当我进入 Close 时,它们就不行了。 有人遇到过类似的问题吗?

我应该在 Item_Write 结束前的 parent 上使用 Marshal.FinalReleaseComObject() 吗?

我认为这样更好,或者通过查看我的代码的某些部分更容易理解发生了什么,尽管问。

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