2014-06-06 49 views
3

我已將視頻文件保存在IsolatedStorage中並使用Windows Phone 8中的媒體元素播放它。第一次,它執行得非常好,並且能夠成功運行,並且可以播放視頻,Windows Phone中的「IsolatedStorageFileStream不允許操作」問題

的問題是,每當我第二次玩,我喜歡這個收到錯誤:

"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仍然保留對該流的引用,因此在嘗試寫入之前將其設置爲null。 –

回答

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();處分流,因此不會拋出異常,但仍問題仍然存在,您可以嘗試解決方案給出如下:

它通常當你執行情況該代碼同時阻塞幾次。你最終鎖定文件。所以,你必須確保你包括在構造函數FileAccessFileShare模式是這樣的:

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