在我的应用程序中,我能够录制3倍的声音并且还可以收听录制的声音。听完后,通过另一个功能我将它们从Isolatedstorage中删除。但问题是,我收听的最后一个声音,保持在isolatedstorage并删除Isolatedstorage的方法是无法删除最后一次播放。而下次当我想录制声音时,我会收到错误。我该如何解决这个问题?
错误:
录制声音的代码:
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();
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我作为从mediaEelemnt发布资源的解决方案所做的就是这段代码。现在我能够删除所有录制的声音,你只需要处理Mediaelement的MediaEnded事件并将null传递给source属性:
void SoundPlayer_MediaEnded(object sender, RoutedEventArgs e)
{
SoundPlayer.Source = null;
}
答案 2 :(得分:0)
使用后尝试关闭所有流。可能是因为溪流开放。