public object GetWithLock(string key, int interval, bool acquireLock, out object lochkHandle) { if (!Loaded) { lochkHandle = null; return(null); } DateTime startTime = DateTime.Now; object value = null; LockHandle handle = null; TimeSpan lockInterval = new TimeSpan(0, 0, 0, 0, interval); while (startTime.AddMilliseconds(interval) >= DateTime.Now) { handle = null; //lochkHandle as LockHandle; if (cache != null) { value = cache.Get <string>(key, true, lockInterval, ref handle); } if (value != null) { break; } if (value == null && handle == null) { break; } Thread.Sleep(500); } if (value == null && handle != null) { if (cache != null) { cache.Unlock(key); value = cache.Get <string>(key, true, lockInterval, ref handle); } } if (value != null) { lochkHandle = handle; } else { lochkHandle = null; } return(value); }