【发布时间】:2014-05-21 01:55:35
【问题描述】:
我正在使用带有 .NET 4.0 和 c# 的 .net 内存缓存,我希望在删除项目时通知我的应用程序(这样我就可以将它已被删除到日志文件或通知 UI,该项目已被删除)。
有没有办法做到这一点。
我使用的是 System.Runtime.Caching.MemoryCache 而不是 System.Web.Caching
【问题讨论】:
标签: c# caching memorycache
我正在使用带有 .NET 4.0 和 c# 的 .net 内存缓存,我希望在删除项目时通知我的应用程序(这样我就可以将它已被删除到日志文件或通知 UI,该项目已被删除)。
有没有办法做到这一点。
我使用的是 System.Runtime.Caching.MemoryCache 而不是 System.Web.Caching
【问题讨论】:
标签: c# caching memorycache
编辑:如果您使用System.Runtime.Caching.MemoryCache,则CacheItemPolicy 对象上有一个callback 用于删除,还有一个用于更新。
myMemoryCache.Set("key", null, new CacheItemPolicy() {RemovedCallback = new CacheEntryRemovedCallback(CacheRemovedCallback) /* your other parameters here */});
public void CacheRemovedCallback(CacheEntryRemovedArguments arguments)
{
// do what's needed
}
初步回答
当 inserting data in the .net cache 用于 System.Web.Caching 命名空间时,您可以选择设置回调以通知删除
Cache.Insert("data", "", null, DateTime.Now.AddMinutes(1), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.High, new CacheItemRemovedCallback(CacheRemovedCallback));
public string CacheRemovedCallback(String key, object value, System.Web.Caching.CacheItemRemovedReason removedReason)
{
// here you can log, renew the value, etc...
}
Insert 方法还有一个签名,可让您将回调指定为 notified before the item is removed
【讨论】:
CacheItemPolicy上的回调