public static T GetCacheObject <T>(string key, int seconds, CacheCallback call, bool refresh = false) { var cache = HttpRuntime.Cache; object cacheObject = cache.Get(key); if (cacheObject == null || refresh) { cacheObject = call(); if (cacheObject == null) { return(default(T)); } cache.Insert(key, cacheObject, null, DateTime.Now.AddSeconds(seconds), TimeSpan.Zero); } if (cacheObject != null) { return((T)Convert.ChangeType(cacheObject, typeof(T))); } else { return(default(T)); } }
/// <summary> /// 监听指定的节点 /// </summary> /// <param name="node">节点名称</param> /// <param name="callback">节点数据更改或者节点被删除时会触发该事件</param> /// <returns>Task</returns> public Task Listen(string node, CacheCallback <string> callback) { NodeDataChangeHandler handler = null; handler = (ct, args) => { //节点被删除或者节点数据改动时清理该节点对应的缓存数据 if (args.Type == Watcher.Event.EventType.NodeDataChanged || args.Type == Watcher.Event.EventType.NodeDeleted) { if (callback != null) { callback(args.Path); } } return(Task.CompletedTask); }; NodeDataChangeHandler handlerLast = null; if (_handlerRecord.ContainsKey(node)) { handlerLast = _handlerRecord[node]; } if (handlerLast != null) { //取消侦听 _zkClient.UnSubscribeDataChange(node, handlerLast); } _handlerRecord[node] = handler; Task task = _zkClient.SubscribeDataChange(node, handler); return(task); }
protected ConfigurationElementCollectionForInterface(Type elementType) { _elementType = elementType; _listType = typeof (List<>).MakeGenericType(new[] { _elementType }); _list = new CacheCallback<int, IList>(ignored=> CreateElements()); }
public void PutItem(string key, object value, IEnumerable <string> dependentEntitySets, TimeSpan slidingExpiration, DateTime absoluteExpiration, CacheCallback <string, object, object> callback) { if (callback != null) { CacheItemRemovedCallback c = (k, v, r) => callback(k, v, r); PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, c); } PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, null); }
public void PutItem(string key, object value, IEnumerable<string> dependentEntitySets, TimeSpan slidingExpiration, DateTime absoluteExpiration, CacheCallback<string, object, object> callback) { if (callback != null) { CacheItemRemovedCallback c = (k, v, r) => callback(k, v, r); PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, c); } PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, null); }
public DataRequestDescriptor(string source, string cacheLocation) { this.Source = source; this.CacheLocation = cacheLocation; // cache never expires by default MaxCacheAge = null; CacheCallback = null; CompletionCallback = null; PriorityCallback = null; BasePriority = 0; Description = ""; }
public DataRequestDescriptor(string source, string cacheLocation, CacheCallback callback) : this(source, cacheLocation) { CacheCallback = callback; }