public override void Write(CacheItemInfo info, byte[] data) { var fi = new FileItem(info); PriorityQueue.AddStorageWorkItem(() => { lock (LockObject) { for (int r = 0; r < WriteRetries; r++) { try { FileItem.EnsurePath(IsoStore, fi.FileName); using (Stream stream = IsoStore.OpenFile(fi.FileName, FileMode.Create, FileAccess.Write, FileShare.None)) { stream.Write(data, 0, data.Length); stream.Flush(); } _cache[info.UniqueName] = info; break; } catch (IsolatedStorageException) { Debug.WriteLine("Exception writing file: Name={0}, Length={1}", fi.FileName, data.Length); // These IsolatedStorageExceptions seem to happen at random, // haven't yet found a repro. So for the retry, // if we failed, sleep for a bit and then try again. // Thread.Sleep(50); } } } }); }