2013-07-12 102 views
0

我嘗試使用二進制序列化序列化一個對象,然後從WPPerfLab採取了一些幫手,我已經得到了該行的錯誤:「不允許操作上IsolatedStorageFileStream」,而寫文件

using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(FileName, FileMode.Create, myIsolatedStorage)) 

這裏的我正在做的一小段片段。

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      if (myIsolatedStorage.FileExists(FileName)) 
      { 
       myIsolatedStorage.DeleteFile(FileName); 
      }     
      using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(FileName, FileMode.Create, myIsolatedStorage)) 
      {           
       new BinarySerializationHelper().Serialize(fileStream, object); 
      } 
    } 

一些谷歌上搜索,我發現,這可能是甲流相關的錯誤,但我相當肯定,有哪些已經打開,我試圖寫入文件中沒有其他流後(名字也隨機!)。

那麼,我該如何解決這個問題呢?

+0

這段代碼在哪裏被調用?你確定它不會被同一個文件名多次調用嗎? – nicholas

+0

它被一個按鈕調用一次(並且我只點擊一次!),並且它是一個靜態方法(類似於'DataManager.saveData(object)')。文件名取決於hashCode和當前的日期/時間。 – StepTNT

回答

0

我發現你的錯誤兄弟。其實,錯誤的原因不是IsolatedStorageFileStream,而是無辜的查找字符串FileName。

我想你正在生成的文件名作爲

字符串文件名= 「some_random_string」 + DateTime.Now.ToString( 「HH:MM」);

或您正在使用的任何日期時間格式。在這條線上放置一個斷點。你會發現FileName的值包含一個字符':'....這是非常糟糕的命名。因此錯誤。嘗試以其他方式命名文件。

但是這個IsolatedStorageFileStream的構造函數讓我非常困惑。所以我用另一種方式。我正在使用IsolateStorage流的方法來打開文件。看代碼

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
    { 
     if (myIsolatedStorage.FileExists(FileName)) 
     { 
      myIsolatedStorage.DeleteFile(FileName); 
     }     
     using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(FileName, System.IO.FileMode.CreateNew)) 
     {           
      new BinarySerializationHelper().Serialize(fileStream, object); 
     } 
} 
相關問題