我的意思是一种在某些缓存值到期时调用的事件或回调。假设这个回调应该被赋予当前缓存的值,例如,将它存储在缓存之外的其他地方。
为了找到这种方法,我查看了通知选项,但它们看起来适用于具有缓存的显式操作,例如添加或删除,而过期是一种隐式发生的事情。我发现在缓存值过期并变为 后的许多分钟内,这些回调都没有被调用null
,而如果我DataCache.Remove
显式调用,则在轮询间隔内正常调用(错误,请参见下面的更新)。
我发现这种行为很奇怪,因为 ASP.Net 有这样的回调。您甚至可以在 SO 上找到如何使用它的说明。
另外,我尝试了 DataCache Events。它是在 MSDN 中写的,字面意思是
此 API 支持 .NET Framework 基础结构,不打算直接从您的代码中使用。
尽管如此,我为这些事件创建了一个处理程序,看看我是否可以像测试它的参数一样CacheOperationStartedEventArgs.OperationType == CacheOperationType.ClearCache
,但它似乎是徒劳的。
此刻,我开始思考缺少所需回调的问题的解决方法。因此,也欢迎提出如何实施它们的建议。
更新。经过更细心和耐心的测试,我发现通知DataCacheOperations.ReplaceItem
是在到期后发送的。遗憾的是,我没有找到获取过期前缓存的值的方法。