【发布时间】:2017-08-17 11:21:10
【问题描述】:
我正在开发一个 Outlook 加载项(插件),而且我基本上是在使用 Outlook 约会项目 (Outlook.AppointmentItem)。
每次有人创建、保存或更新定期约会项目时,我需要获取主要的AppointmentItem(父级)并添加或更新UserProperty。
直到这里,它或多或少都在工作。这意味着我得到了父母,我可以操纵他的UserProperties,但它并不是每次都有效。
如果定期约会出现 5 次,并且对于每个参考我更新一些内容,我希望修改父级的 UserProperties 5 次。但这不起作用,有时父母是他的旧“状态”。
从技术上讲,在Item_Write 中,我得到了父级并更改了他的UserProperties。就在Item_Write 的最后一个括号之前,我检查了父级的UserProperties,它们包含我所期望的。但是在 Item_Write 之后调用的“关闭”方法中,当我检查父级是否仍然包含预期的 UserProperties 时,我看到它们尚未更新并且它们仍然处于与之前相同的状态。
经过一番研究,我看到很多人(甚至是 Msdn)说我应该使用Marshal.ReleaseComObject()。我试过了,现在每次我打电话给他们时我都会释放父母(和其他COM对象)。也许我没有很好地使用它,因此它仍然无法正常工作。
问题似乎出现在Item_Write 和Close 之间。离开Item_Write 后,UserProperties 还可以,但是当我输入Close 时,它们不再是了。
有没有人遇到过类似的问题?
我应该在 Item_Write 结束之前在父级上使用 Marshal.FinalReleaseComObject() 吗?
我认为这更好,或者通过查看我的代码的某些部分更容易理解发生了什么,请问。
【问题讨论】:
标签: c# com vsto office-interop outlook-addin