public static MethodInfo GetMethodInfo( object caller, Type declaringType, string methodName, Type[] parameterTypes) { if (declaringType == null) { declaringType = caller.GetType(); } return(CacheAspect.GetMethodInfo(declaringType, methodName, parameterTypes)); }
/// <summary> /// Clear a method call cache. /// </summary> /// <param name="methodInfo">The <see cref="MethodInfo"/> representing cached method.</param> public static void ClearCache(MethodInfo methodInfo) { if (methodInfo == null) { throw new ArgumentNullException("methodInfo"); } CacheAspect aspect = GetAspect(methodInfo); if (aspect != null) { CleanupThread.ClearCache(aspect.Cache); } }
//public static void UnregisterCache(IDictionary cache) //{ // lock (RegisteredAspects.SyncRoot) // RegisteredAspects.Remove(cache); //} public static void ClearCache(CacheAspect aspect) { lock (RegisteredAspects.SyncRoot) { if (!aspect.HasCache) { return; } if (!Monitor.TryEnter(aspect.CacheSyncRoot, 10)) { return; } try { _objectsExpired += aspect.Cache.Count; aspect.Cache.Clear(); } finally { Monitor.Exit(aspect.CacheSyncRoot); } } }
public static void ClearCache(CacheAspect aspect, CompoundValue key) { lock (RegisteredAspects.SyncRoot) { if (!aspect.HasCache) { return; } if (!Monitor.TryEnter(aspect.CacheSyncRoot, 10)) { return; } try { _objectsExpired += 1; aspect.Cache.Remove(key); } finally { Monitor.Exit(aspect.CacheSyncRoot); } } }
public static void ClearCache(CacheAspect aspect, CompoundValue key) { lock (RegisteredAspects.SyncRoot) { if (!aspect.HasCache) return; if (!Monitor.TryEnter(aspect.CacheSyncRoot, 10)) return; try { _objectsExpired += 1; aspect.Cache.Remove(key); } finally { Monitor.Exit(aspect.CacheSyncRoot); } } }
//public static void UnregisterCache(IDictionary cache) //{ // lock (RegisteredAspects.SyncRoot) // RegisteredAspects.Remove(cache); //} public static void ClearCache(CacheAspect aspect) { lock (RegisteredAspects.SyncRoot) { if (!aspect.HasCache) return; if (!Monitor.TryEnter(aspect.CacheSyncRoot, 10)) return; try { _objectsExpired += aspect.Cache.Count; aspect.Cache.Clear(); } finally { Monitor.Exit(aspect.CacheSyncRoot); } } }