Windows phone 8 即使我删除了它,文件仍保留在隔离存储中
在我的应用程序中,我可以录制3次我的声音,还可以收听录制的声音。听了之后,我通过另一个函数将它们从隔离存储中删除。但问题是,我听的最后一个声音,留在isolatedstorage中,isolatedstorage的remove方法无法删除最后的播放。下一次当我想录声音时,我会出错。我怎样才能解决这个问题 错误: 录音代码:Windows phone 8 即使我删除了它,文件仍保留在隔离存储中,windows-phone-8,windows-phone,isolatedstorage,Windows Phone 8,Windows Phone,Isolatedstorage,在我的应用程序中,我可以录制3次我的声音,还可以收听录制的声音。听了之后,我通过另一个函数将它们从隔离存储中删除。但问题是,我听的最后一个声音,留在isolatedstorage中,isolatedstorage的remove方法无法删除最后的播放。下一次当我想录声音时,我会出错。我怎样才能解决这个问题 错误: 录音代码: private void SaveTempAudio(MemoryStream buffer) { using (var isoS
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();
}
您应该使用如下所示的代码作为从MediaElement释放资源的解决方案。现在我可以删除所有录制的声音,您只需处理mediaelement的MediaEnded事件并将null传递给source属性:
void SoundPlayer_MediaEnded(object sender, RoutedEventArgs e)
{
SoundPlayer.Source = null;
}
尝试在使用完所有流后关闭它们。可能是因为流正在打开。您是否给出了正确的路径?检查一下。如果路径正确,则上述各项应正常工作。如果路径正确。当我听不到录制的声音时,我没有问题,而且我可以删除所有的声音,但是如果我听了,最后一个文件(不管是哪一个),我会得到一个错误…可能是最后一个播放的引用没有发布,所以它无法删除引用的文件是的,我认为你是对的,但是我怎样才能释放那个文件呢?当我这样做的时候:SoundPlayer.Source=null;在播放功能结束时,一切都很顺利,没有任何例外,但我无法收听录制的声音