Example #1
0
        public override void Update(CacheItemInfo oldInfo, CacheItemInfo newInfo)
        {
            if (oldInfo.Equals(newInfo)) return;

            var oldFilename = new FileItem(oldInfo).FileName;
            var newFilename = new FileItem(newInfo).FileName;

            PriorityQueue.AddStorageWorkItem(() =>
                {
                    lock (LockObject)
                    {
                        using (var store = IsolatedStorageFile.GetUserStoreForApplication())
                        {
                            if (store.FileExists(newFilename))
                                store.DeleteFile(newFilename);

                            using (var readStream = new IsolatedStorageFileStream(oldFilename, FileMode.Open, store))
                            using (var writeStream = new IsolatedStorageFileStream(newFilename, FileMode.Create, store))
                            using (var reader = new StreamReader(readStream))
                            using (var writer = new StreamWriter(writeStream))
                            {
                                writer.Write(reader.ReadToEnd());
                            }

                            store.DeleteFile(oldFilename);
                        }
                    }
                });
        }