Skip to content

Instantly share code, notes, and snippets.

@dbeattie71
Created February 2, 2012 17:19
Show Gist options
  • Save dbeattie71/1724662 to your computer and use it in GitHub Desktop.
Save dbeattie71/1724662 to your computer and use it in GitHub Desktop.
Mutexed IsolatedStorageFile
public static class MutexedIsoStorageFile
{
public static T Read<T>(string fileName, string mutexName) where T : new()
{
var mutexFile = new Mutex(false, mutexName);
var model = new T();
mutexFile.WaitOne();
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = new IsolatedStorageFileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read, store))
using (var reader = new StreamReader(stream))
{
if (!reader.EndOfStream)
{
var serializer = new XmlSerializer(typeof (T));
model = (T) serializer.Deserialize(reader);
}
}
}
finally
{
mutexFile.ReleaseMutex();
}
return model;
}
public static void Write<T>(T data, string fileName)
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = new IsolatedStorageFileStream(fileName,
FileMode.Create,
FileAccess.Write,
store))
{
var serializer = new XmlSerializer(typeof (T));
serializer.Serialize(stream, data);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment