public override void Delete(byte[] key) { lock (this.writeLock) { CacheEntry <Value> curVal = null; if (this.cache.ContainsKey(key)) { curVal = this.cache[key]; } if (curVal == null) { curVal = this.CreateCacheEntry(default(Value)); CacheEntry <Value> oldVal = null; if (this.cache.ContainsKey(key)) { oldVal = this.cache[key]; } this.cache[key] = curVal; if (oldVal != null) { this.CacheRemoved(key, oldVal.value); } this.CacheAdded(key, curVal.value); } curVal.Deleted(); } }