停止播放通过SoundEffect.FromStream调用的声音

时间:2011-08-10 20:41:39

标签: c# windows windows-phone-7

我有一些Windows Phone 7代码,可以使用SoundEffect.FromStream开始播放声音。我正在使用它而不是普通的媒体对象,因为我需要在一页上有多个音频剪辑。

但是,基于某些外部事件,我想停止特定的声音播放。由于通过开放流播放的声音是“玩耍和忘记”,我无法弄清楚如何引用这种播放声音并将其停止。

    public void PlaySoundCircus(object sender, RoutedEventArgs e)
    {
        if (audioPlaying == false)
        {
            using (var stream = TitleContainer.OpenStream("circus.wav"))
            {
                var effect = SoundEffect.FromStream(stream);
                FrameworkDispatcher.Update();
                effect.Play();
            }
            audioPlaying = true;
        }
    }

1 个答案:

答案 0 :(得分:11)

您需要创建一个SoundEffectInstance来存储对SoundEffect的引用。 SoundEffectInstanceStop方法可以调用。

SoundEffectInstance seiCircus;

using (var stream = TitleContainer.OpenStream("circus.wav"))
{
    var effect = SoundEffect.FromStream(stream);
    //create the instance
    seiCircus = effect.CreateInstance();

    FrameworkDispatcher.Update();
    //play sound via the instance
    seiCircus.Play();
}

//some event called to stop sound
seiCircus.Stop();