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