文件保留在isolatedstorage甚至我删除它

时间:2014-07-21 12:49:48

标签: windows-phone-8 windows-phone isolatedstorage

在我的应用程序中,我能够录制3倍的声音并且还可以收听录制的声音。听完后,通过另一个功能我将它们从Isolatedstorage中删除。但问题是,我收听的最后一个声音,保持在isolatedstorage并删除Isolatedstorage的方法是无法删除最后一次播放。而下次当我想录制声音时,我会收到错误。我该如何解决这个问题?

错误:

enter image description here

录制声音的代码:

        private void SaveTempAudio(MemoryStream buffer)
    {

        using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
        {
            var bytes = buffer.GetWavAsByteArray(_recorder.SampleRate);
            var tempFileName = "tempwave_" + _counter +".wav" ;

            using (var audioStream = isoStore.CreateFile(tempFileName))
            {
                audioStream.Write(bytes, 0, bytes.Length);
                _counter++;
            }
        }
    }

播放代码并聆听录制的声音;

        private void PlayBackSound( string fileName)
    {

        using (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!isoStorage.FileExists(fileName))
                return;

            using (var fileStream = isoStorage.OpenFile(fileName, FileMode.Open, FileAccess.Read))
            {
                SoundPlayer.SetSource(fileStream);
                SoundPlayer.Play();

            }
        }
    }

删除我使用的文件:

             using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
        {
            isoStore.Remove();
        }

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我作为从mediaEelemnt发布资源的解决方案所做的就是这段代码。现在我能够删除所有录制的声音,你只需要处理Mediaelement的MediaEnded事件并将null传递给source属性:

void SoundPlayer_MediaEnded(object sender, RoutedEventArgs e)
{
      SoundPlayer.Source = null;
}

答案 2 :(得分:0)

使用后尝试关闭所有流。可能是因为溪流开放。