Vitalii

Untitled

May 11th, 2014
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.75 KB | None | 0 0
  1. private static readonly AsyncReaderWriterLock readerLocker = new AsyncReaderWriterLock();
  2.         private static readonly AsyncReaderWriterLock writerLocker = new AsyncReaderWriterLock();
  3.  
  4.  
  5.         public static async Task<T> ReadJsonEx<T>(String fileName)
  6.         {
  7.             if (String.IsNullOrEmpty(fileName))
  8.                 return default(T);
  9.  
  10.             return await await Task.Factory.StartNew(async () =>
  11.             {
  12.                 using (var locker = await readerLocker.ReaderLockAsync())
  13.                 using (var store = IsolatedStorageFile.GetUserStoreForApplication())
  14.                 using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Open, store))
  15.                 using (var sr = new StreamReader(stream))
  16.                 using (var jr = new JsonTextReader(sr))
  17.                     return await jr.ReadJsonAsyncTask<T>();
  18.             });
  19.         }
  20.        
  21.         public static async Task<bool> WriteJsonEx<T>(String fileName, T content)
  22.         {
  23.             if (String.IsNullOrEmpty(fileName))
  24.                 return false;
  25.  
  26.             return await await Task.Factory.StartNew(async () =>
  27.             {
  28.                 using (var locker = await writerLocker.WriterLockAsync())
  29.                 using (var store = IsolatedStorageFile.GetUserStoreForApplication())
  30.                 {
  31.                     store.CreateFolderIfNecessary(fileName);
  32.  
  33.                     using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Create, store))
  34.                     using (var sw = new StreamWriter(stream))
  35.                     using (var jw = new JsonTextWriter(sw))
  36.                         await jw.WriteJsonAsyncTask(content);
  37.                 }
  38.  
  39.                 return true;
  40.             });
  41.         }
Advertisement
Add Comment
Please, Sign In to add comment