Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在代码互操作中保存时,LastModificationTime不会更新。Outlook_C#_Outlook_Interop - Fatal编程技术网

C# 在代码互操作中保存时,LastModificationTime不会更新。Outlook

C# 在代码互操作中保存时,LastModificationTime不会更新。Outlook,c#,outlook,interop,C#,Outlook,Interop,我依赖于outlook interop中的只读属性 TaskItem.LastModificationTime 我应用更改并保存项目。不幸的是,上次修改时间没有更新,而值却保存了 如何强制更新此字段(此时)?Outlook对象模型缓存大多数MAPI值。尝试完全释放任务(Marshal.ReleaseComObject)并使用Namespace.GetItemFromID重新打开它。Marshal.ReleaseComObject对该项进行处理,然后使用Namespace重新打开它。GetIte

我依赖于outlook interop中的只读属性

TaskItem.LastModificationTime

我应用更改并保存项目。不幸的是,上次修改时间没有更新,而值却保存了


如何强制更新此字段(此时)?

Outlook对象模型缓存大多数MAPI值。尝试完全释放任务(Marshal.ReleaseComObject)并使用Namespace.GetItemFromID重新打开它。

Marshal.ReleaseComObject对该项进行处理,然后使用Namespace重新打开它。GetItemFromID不应用新的LastModificationTime(至少在Outlook 2010中)。只有释放Outlook.NameSpace实例才能执行此操作。然而,仅仅为了提交对某个项的更改而关闭/重新打开名称空间对象似乎是在使用大锤敲开螺母。有更好的主意吗?更确切地说,Save()确实会将LastModificationTime更改为当前时间,紧随其后的Marshal.ReleaseComObject/Namespace.GetItemFromID不会更改任何内容(因为LastModificationTime已经更新),但当应用程序关闭会话时,该项会以某种方式再次更新,这一次是Outlook本身造成的。结果表明,Exchange缓存模式是一个问题。如果关闭,则所述解决方案有效。但是,Outlook的速度非常慢,因此禁用此模式不是一个选项。问题仍然存在。。
        TaskItem ti = TaskUtil.GetTask(added.Id);            
        ti.Subject = changedname;            
        ti.Save();