【问题标题】:Outlook VSTO - Update Periodic AppointmentItem ParentOutlook VSTO - 更新定期 AppointmentItem 父项
【发布时间】: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_WriteClose 之间。离开Item_Write 后,UserProperties 还可以,但是当我输入Close 时,它们不再是了。 有没有人遇到过类似的问题?

我应该在 Item_Write 结束之前在父级上使用 Marshal.FinalReleaseComObject() 吗?

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我也认为问题与某些对象未正确释放有关。我已经读过那篇文章,但是感谢你,当我这次读到它时,我注意到 AppointmentItem 上的 Exceptions 属性,并且使用该属性我可以做我愿意但以另一种方式做的事情(所以上面描述的问题是不再出现)。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多