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); } } } }); }
public byte[] Read(string filename) { // Debug.WriteLine("Storage: Reading " + filename); byte[] bytes = new byte[] { };; // Opening for read only. try { if (IsoStore.FileExists(filename)) { using (var fileStream = IsoStore.OpenFile(filename, FileMode.Open, FileAccess.Read)) { bytes = new byte[fileStream.Length]; fileStream.Read(bytes, 0, bytes.Length); } } } catch (FileNotFoundException) { } catch (IsolatedStorageException) { } /*finally * { * }*/ return(bytes); }
public override byte[] Read(CacheItemInfo item) { var fi = new FileItem(item); byte[] bytes = null; lock (LockObject) { if (!IsoStore.FileExists(fi.FileName)) { return(null); } using (Stream stream = IsoStore.OpenFile(fi.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { bytes = new byte[stream.Length]; stream.Read(bytes, 0, (int)stream.Length); } } return(bytes); }
public void Write(string filename, byte[] data) { using (var fileStream = IsoStore.OpenFile(filename, FileMode.Create, FileAccess.Write, FileShare.Write)) // IsoStore.CreateFile(filename)) { try { if (data != null && data.Length > 0) { Debug.WriteLine("Storage: Writing " + filename); fileStream.Write(data, 0, data.Length); } } catch { } //finally //{ //fileStream.Close(); //} } }