2014-06-06 2 views
3

Я сохранил видеофайл в IsolatedStorage и воспроизвел его с помощью Media Element в Windows Phone 8. В первый раз он работает очень хорошо и успешно работает, и я могу играть видео,«Операция не разрешена в отношении изолированного хранилища» в Windows Phone

проблема заключается в том, что всякий раз, когда я играю во второй раз, я получаю сообщение об ошибке, как это:

"Operation not permitted on IsolatedStorageFileStream" 

Смотрите мой код:

string mediafile = "asaqwrereertrtyrzxxcvcvvbvbv+qwwezzxzxz"; 
byte[] PlayByte = Convert.FromBase64String(mediafile); 
MemoryStream stream = new MemoryStream(PlayByte, 0, PlayByte.Length); 


IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(audioName, FileMode.OpenOrCreate,FileAccess.ReadWrite, IsolatedStorageFile.GetUserStoreForApplication()); 
isfStream.Write(stream.ToArray(), 0, stream.ToArray().Length); 
isfStream.Close(); 
Uri uri = new Uri(isfStream.Name.ToString()); 
MediaElement1.Source = uri; 
MediaElement1.Play(); 
+2

«Операция не разрешена на IsolatedStorageFileStream» ошибки скорее всего, означает, что вы пытаетесь использовать файл, который уже используемый вашим приложением. Я предлагаю вам проверить, если вы закрыли FileStream после того, как закончили воспроизведение медиафайла. – Olter

+0

@Olter Я использовал isfStream.Close(); поэтому, если я удалю его, видео не будет воспроизводиться даже один раз. –

+1

@BinjalShah - MediaElement1 по-прежнему содержит ссылку на этот поток, поэтому перед тем, как писать там, не устанавливайте его равным нулю. –

ответ

0
string mediafile = "asaqwrereertrtyrzxxcvcvvbvbv+qwwezzxzxz"; 
byte[] PlayByte = Convert.FromBase64String(mediafile); 
     MemoryStream stream = new MemoryStream(PlayByte, 0, PlayByte.Length); 
     string finalstring = stream.ToString(); 

     **MediaElement1.Source = null;** 
      IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(audioName, FileMode.Create, IsolatedStorageFile.GetUserStoreForApplication()); 
      isfStream.Write(stream.ToArray(), 0, stream.ToArray().Length); 
      isfStream.Close(); 
      Uri uri = new Uri(isfStream.Name.ToString()); 
      MediaElement1.Source = uri; 
      MediaElement1.Play(); 
1

она должна быть решена путем размещения этого потока означает, что, когда звук перестает играть выбрасывайте поток по isfStream.Dispose(); поэтому он не будет бросать исключение, но все же проблема остается Вы можете попробовать решения ниже:

Это обычно происходит, когда вы выполняете этот блок кода несколько раз одновременно. В итоге вы заблокируете файл. Таким образом, вы должны убедиться, что вы включили FileAccess и FileShare режимы в конструкторе, как это:

using(var isfStream = new IsolatedStorageFileStream(audioName, FileMode.OpenOrCreate,FileAccess.ReadWrite, IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
//... 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^