/// <summary> /// Gets data async. /// </summary> /// <param name="key">The key.</param> /// <param name="callback">The callback.</param> internal static void GetAsync(string key, Action <object> callback) { var data = Get(key); if (data != null) { callback(data); } else { CacheItem cacheItem; if (!Container.TryGetValue(key, out cacheItem)) { var syncTask = new CacheAsyncTask { Key = key, Callback = callback }; lock (syncObject) { PendingAsyncQueue.Enqueue(syncTask); } } } }
/// <summary> /// Adds the sync action. /// </summary> /// <param name="key">The cache item key for sync.</param> /// <param name="action">The sync action.</param> internal static void AddAsyncAction(string key, TimeSpan expires, Action <string, Action <object> > action) { if (action == null) { throw new ArgumentNullException("action"); } lock (syncObject) { AsyncTasks[key] = new CacheAsyncTask { Key = key, SyncAction = action, DataExpires = expires }; } }