2010-11-03 9 views
5

Silverlight'ta bir Windows Phone 7 uygulaması yapıyorum. IsolatedStorage ile sorun yaşıyorum..NET: IsolatedStorageException

 IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication(); 
     if (!storage.FileExists(STORIES_FILE)) 
     { 
      storage.CreateFile(STORIES_FILE); 
     } 

     string contents; 

     // fails here 
     using (IsolatedStorageFileStream stream = storage.OpenFile(STORIES_FILE, FileMode.Open)) 
     { 
      using (StreamReader reader = new StreamReader(stream)) 
      { 
       contents = reader.ReadToEnd(); 
      } 
     } 

istisnadır:

"Operation not permitted on IsolatedStorageFileStream." 
System.Exception {System.IO.IsolatedStorage.IsolatedStorageException} 

yanlış burada ne yapıyor olabilir? MSDN says Bu istisna, yalıtılmış depolama kaldırıldığında veya devre dışı bırakıldığında atılır. Bu olabilir mi? Bu problemi emülatörde yaşıyorum.

Güncelleştirmesi10: Bu, yalnızca uygulamayı ilk kez emülatörde çalıştırdığım sırada görünüyor. Uygulama kilitlendikten sonra, bunu yine emülatörde çalıştırıyorum ve bu sorun oluşmuyor.

Güncelleme 2: yerine FileMode.Open ait FileMode.OpenOrCreate sorununu çözmüş görünüyor kullanma.

+0

. İlk kez başarılı olur, ancak saniye saniye başarısız olur. – swinefeaster

cevap

3

Eğer uygulamayı çalıştırmak ilk kez, dosya yoktur, bunun yerine bu deneyin: Ben FileMode.OpenOrCreate kullanarak, ama yine aynı sorunu alıyorum

using (IsolatedStorageFileStream stream = storage.OpenFile(STORIES_FILE, FileMode.OpenOrCreate)) 
     { 
      using (StreamReader reader = new StreamReader(stream)) 
      { 
       contents = reader.ReadToEnd(); 
      } 
     } 
+0

Ama ben 'storage.CreateFile (FILE_NAME)' diyorum. Bu bir şey yapmıyor mu? –

+0

Evet, ancak bu kod parçasında storage.CreateFile çağrısı tarafından döndürülen akışı kullanmadınız. Bu örnek sulandığında veya kapatıldığında, dosya hala mevcut olmayacaktı. FileMode parametresindeki değişiklikle, temizlemek için çağrıyı CreateFile öğesine kaldırabilirsiniz. –

+0

Yani storage.CreateFile ("Foo") gibi bir şeye ihtiyacım var Flush() '? –