0

我存儲在IsolatedStorage音頻文件..如何從IsolatedStorage中讀取音頻文件?

我想通過調用另一個類的方法來訪問它:

using (IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    using (IsolatedStorageFileStream fileStream = isolatedStorage.OpenFile(filePath, FileMode.Open, FileAccess.Read)) 
    { 

     return fileStream; 
    } 
} 

現在,當我調用該方法是這樣的:

var fileStream = Musics.TryGetMusic("DaDaDa.mp3"); 
musicMediaElement.SetSource(fileStream); 
musicMediaElement.Play(); 

我收到一個錯誤消息,說它無法讀取已關閉的文件。

原因是我正在使用using聲明,並且在撥打Play()時文件已關閉。 我該如何解決這個問題?

回答

1

這是因爲,我相信喲調用它,就像

.... 

using (IsolatedStorageFileStream fileStream = isolatedStorage.OpenFile(filePath, FileMode.Open, FileAccess.Read)) 
{  
    return fileStream; 
} 
.... 

using聲明退出後,fileStream實例將被佈置。

要解決此問題,應該足以在此處不使用using,而是跟蹤該實例生存期並在適當的位置手動處理。

+0

謝謝@Tigran。我怎麼能手動處理它,而這是另一個類(助手)'Musics.TryGetMusic()'的方法',我無法再訪問它了? – user2799350

+0

@ user2799350:你將它返回給調用者。所以來電者可以照顧跟蹤它。 – Tigran

+0

所以在我上面的問題中,我應該稍後處理'var fileStream = ...'。 – user2799350

相關問題