0

に保存されている音声ファイルがあり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()。どうすればこの問題を解決できますか?

4

1 に答える 1

1

それは、あなたがそれを呼ぶと思うからです。

.... 

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

usingステートメントを終了すると、fileStreamインスタンスは破棄されます。

この問題を解決するには、usingここでは使用しないで十分ですが、代わりにそのインスタンスの有効期間を追跡し、適切な場所で手動で dispose を呼び出します。

于 2013-09-25T15:10:52.660 に答える