/// <summary>
        /// Removes the given item from the cache.
        /// </summary>
        /// <param name="guid">The guid of the item to remove.</param>
        /// <param name="removeNow">true to remove the item now; false to remove the
        /// item later when the cache is purged.</param>
        public void Remove(Guid guid, bool removeNow)
        {
            CacheItem cacheItem = null;

            if (!thumbCache.TryGetValue(guid, out cacheItem))
            {
                return;
            }

            if (removeNow)
            {
                MemoryUsed -= GetImageMemorySize(cacheItem.Size.Width, cacheItem.Size.Height);
                cacheItem.Dispose();
                thumbCache.Remove(guid);
            }
            else
            {
                MemoryUsedByRemoved += GetImageMemorySize(cacheItem.Size.Width, cacheItem.Size.Height);
                removedItems.Add(guid);

                Purge();
            }

            // Remove from disk cache
            ImageListViewItem item = null;

            if (mImageListView != null && mImageListView.Items.TryGetValue(guid, out item))
            {
                string diskCacheKey = item.Adaptor.GetUniqueIdentifier(item.VirtualItemKey, cacheItem.Size, cacheItem.UseEmbeddedThumbnails, cacheItem.AutoRotate, cacheItem.UseWIC);
                diskCache.Remove(diskCacheKey);
            }
        }