0

У меня есть аудио файл, хранящийся в IsolatedStorage ..Как читать аудиофайл из IsolStorage?

Я хочу, чтобы получить доступ к нему путем вызова метода другого класса:

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