5

我的意思是一种在某些缓存值到期时调用的事件或回调。假设这个回调应该被赋予当前缓存的值,例如,将它存储在缓存之外的其他地方。

为了找到这种方法,我查看了通知选项,但它们看起来适用于具有缓存的显式操作,例如添加或删除,而过期是一种隐式发生的事情。我发现在缓存值过期并变为 后的许多分钟内,这些回调都没有被调用null,而如果我DataCache.Remove显式调用,则在轮询间隔内正常调用(错误,请参见下面的更新)。

我发现这种行为很奇怪,因为 ASP.Net 有这样的回调。您甚至可以在 SO 上找到如何使用它的说明。

另外,我尝试了 DataCache Events。它是在 MSDN 中写的,字面意思是

此 API 支持 .NET Framework 基础结构,不打算直接从您的代码中使用。

尽管如此,我为这些事件创建了一个处理程序,看看我是否可以像测试它的参数一样CacheOperationStartedEventArgs.OperationType == CacheOperationType.ClearCache,但它似乎是徒劳的。

此刻,我开始思考缺少所需回调的问题的解决方法。因此,也欢迎提出如何实施它们的建议。

更新。经过更细心和耐心的测试,我发现通知DataCacheOperations.ReplaceItem是在到期后发送的。遗憾的是,我没有找到获取过期前缓存的值的方法。

4

0 回答 0