2013-09-21 62 views
0

在我的Silverlight應用程序中,我從具有ZipInputStream的文件讀取音頻數據,然後將其存儲在MemoryStream中。這裏是我正在使用的代碼:MediaElement隨機停止從MemoryStream中播放音頻

byte[] buf = new byte[1024]; 
MemoryStream memoryStream = new MemoryStream(); 
int len; 
while ((len = zipInputStream.Read(buffer, 0, buffer.Length)) > 0) 
{ 
    memoryStream.Write(buf, 0, len); 
} 

// Reset the position for reading. 
memoryStream.Position = 0; 
// Check how large the byte[] is. 
textBox.Text = memoryStream.ToArray().Length.ToString();  

MediaElement me = new MediaElement(); 
me.setSource(memoryStream); 
me.Play(); 

此代碼部分工作;輸入文件中的歌曲開始播放。另外,對於同一首歌曲,字節[]總是具有相同的長度。我認爲這意味着這首歌每次都會被完全閱讀。

但是,我的問題是,音頻隨機停止播放在每個不同的點通過。這首歌還沒有完全播放,要麼。我不確定爲什麼會發生這種情況。

如果有人知道,我想知道爲什麼會發生這種情況。我還想知道我的代碼是否有問題,或者我應該採用不同的方式來存儲音頻(不涉及在用戶計算機上存儲文件)。

回答

0

我終於能夠找到解決方案。通過製作MediaElement和MemoryStream全局變量,歌曲每次都完全播放。我仍然不是100%確定是什麼導致了這個錯誤,但我最好的猜測是這個問題是由垃圾收集器刪除流所引起的。