MediaElement重复播放Exception

时间:2011-11-27 21:45:13

标签: windows-phone-7 isolatedstorage mediaelement

我是WP7的新手,当我按下按钮时,我正试图用MediaElement播放声音。 它的工作,但不幸的是,当声音开始之前我反复按下按钮时,我得到“在IsolatedStorageFileStream上不允许操作”的例外情况。我怎么能避免这种情况?

Play方法:

public void Play(string filename)
{
    try
    {
        mediaElement.Stop();
        mediaElement.ClearValue(MediaElement.SourceProperty);

        using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream fileStream = isf.OpenFile(@"shared\transfers\" + filename, FileMode.Open))
            {
                mediaElement.SetSource(fileStream);
                mediaElement.IsMuted = false;
                mediaElement.Volume = 1.0;
            }
        }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);
    }
}

事件处理程序:

void me_MediaOpened(object sender, RoutedEventArgs e)
{
    mediaElement.Play();
}

void me_MediaEnded(object sender, RoutedEventArgs e)
{
    mediaElement.ClearValue(MediaElement.SourceProperty);
}

1 个答案:

答案 0 :(得分:0)

如果您希望允许用户仅点击一次播放按钮。一种方法是。

public bool IsPlaying = false;
    void me_MediaOpened(object sender, RoutedEventArgs e)
        {


    if(!IsPlaying){
        mediaElement.Play();
        IsPlaying = true;
        }
    }

    void me_MediaEnded(object sender, RoutedEventArgs e)
    {
        if(IsPlaying){
        mediaElement.ClearValue(MediaElement.SourceProperty);
        IsPlaying = false;
        }
}

在播放之前将filestream加载到memorystream会使其更加灵活,如果您处理的是小尺寸流。