IsolatedStorageFileStream上不允许操作.错误

yoz*_*ama 8 c# silverlight isolatedstorage windows-phone-7 windows-phone-8

我有孤立存储的问题.

这是我的代码:

List<Notes> data = new List<Notes>();

using (IsolatedStorageFile isoStore = 
         IsolatedStorageFile.GetUserStoreForApplication())
{
  using (IsolatedStorageFileStream isoStream = 
           isoStore.OpenFile("Notes.xml", FileMode.OpenOrCreate))
  {
    XmlSerializer serializer = new XmlSerializer(typeof(List<Notes>));
    data = (List<Notes>)serializer.Deserialize(isoStream);              
  }
}

data.Add(new Notes() { Note = "hai", DT = "Friday" });

return data;
Run Code Online (Sandbox Code Playgroud)

错误:IsolatedStorageFileStream上不允许操作.在

using (IsolatedStorageFileStream isoStream = 
        isoStore.OpenFile("Notes.xml", FileMode.OpenOrCreate))
Run Code Online (Sandbox Code Playgroud)

Lai*_*ith 16

当您同时执行该代码块数次时,通常会发生这种情况.你最终锁定了文件.因此,您必须确保在构造函数中包含FileAccess和FileShare模式,如下所示:

using (var isoStream = new IsolatedStorageFileStream("Notes.xml", FileMode.Open, FileAccess.Read, FileShare.Read, isolatedStorage)
{
//...
}
Run Code Online (Sandbox Code Playgroud)

如果你想在其他人正在阅读时写入文件,那么你需要像这样同步锁定:

private readonly object _readLock = new object();

lock(_readLock)
{
   using (var isoStream = new IsolatedStorageFileStream("Notes.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, isolatedStorage)
   {
        //...
   }
}
Run Code Online (Sandbox Code Playgroud)