0

我的情况是我在缓存中有一个带有多个现有标签的项目。我想使用PutAndUnlock方法更新项目。我是否需要先检索任何现有标签并将它们传递给PutAndUnlock方法以保留它们?

与此相关,添加新标签,在将它们传递给PutAndUnlock方法之前,我是否必须获取现有标签并附加任何新标签?

4

1 回答 1

0

Microsoft.ApplicationServer.Caching.MultiDirectoryHashtable.PreProcess(AMDHObjectNode oldObjectNode, ref AMDHObjectNode newObjectNode, ref MDHOperationInfo operationInfo) 中的开关 (operationInfo.OperationType) case MDHOperationType.PUT_AND_UNLOCK 是 MDHOperationInfo 确定现有项目是否为空(或抛出)的位置,或者如果它应该做看跌期权。PreProcess 由 MultiDirectoryHashtable.PutNodeInSlot(ref MDHOperationInfo operationInfo, MDHDirectoryNode dir, int slotIndex) 调用。PreProcess 的返回结果是真的,所以它应该最终调用 dir.PutNodeInSlot(slotIndex, newObjectNode),这将有我认为的最终答案。

据我所知,它只是对 MDHNode 插槽进行了简单的分配,而没有对标签进行任何比较。它使用 operationInfo.AssignNewInternalCacheItemVersion() 分配一个新版本,但我看不到它在哪里对标签做了任何事情。

如果您查看 Microsoft.ApplicationServer.Caching.MDHOperationInfo 上 NewCacheItem 属性的用法,它们似乎并没有触及标签。

于 2014-06-19T19:25:56.160 回答