C# 如何使用MediaPlayer c停止声音#

C# 如何使用MediaPlayer c停止声音#,c#,visual-studio,audio,media-player,desktop,C#,Visual Studio,Audio,Media Player,Desktop,我有这个功能,我必须使用MediaPlayer,因为我必须一起播放更多的声音。这段代码可以工作,但在按键时声音不会停止(我尝试了一些代码,但没有工作)。我怎样才能完成stopSound功能? 谢谢你 private void Form1_KeyDown(object sender, KeyPressEventArgs e) { [...] // Other code playSound(key, name); } private void Form1_KeyUp(objec

我有这个功能,我必须使用MediaPlayer,因为我必须一起播放更多的声音。这段代码可以工作,但在按键时声音不会停止(我尝试了一些代码,但没有工作)。我怎样才能完成stopSound功能? 谢谢你

private void Form1_KeyDown(object sender, KeyPressEventArgs e)
{
    [...]   // Other code
    playSound(key, name);
}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    [...]   // Other code
    stopSound(key, name);
}

private void playSound(string name)
{
    [...]   // Other code
    string url = Application.StartupPath + "\\notes\\" + name + ".wav";
    var sound = new System.Windows.Media.MediaPlayer();

    sound.Open(new Uri(url));
    sound.play();
}

private void stopSound(string name)
{
    ???
}

如果您存储了对在
列表中创建的
MediaPlayer
实例的所有引用,您可以稍后使用此列表访问它们并停止它们。大概是这样的:

List<System.Windows.Media.MediaPlayer> sounds = new List<System.Windows.Media.MediaPlayer>();
private void playSound(string name)
{
    string url = Application.StartupPath + "\\notes\\" + name + ".wav";
    var sound = new System.Windows.Media.MediaPlayer();
    sound.Open(new Uri(url));
    sound.play();
    sounds.Add(sound);
}

private void stopSound()
{
    for (int i = sounds.Count - 1; i >= 0; i--)
    {
        sounds[i].Stop();
        sounds.RemoveAt(i);
    }
}
List sounds=newlist();
私有void播放声音(字符串名称)
{
字符串url=Application.StartupPath+“\\notes\\”+name+“.wav”;
var sound=new System.Windows.Media.MediaPlayer();
打开(新Uri(url));
声音。播放();
声音。添加(声音);
}
私人电台
{
对于(int i=sounds.Count-1;i>=0;i--)
{
听起来[i].Stop();
声音。RemoveAt(i);
}
}

检查此项当然,此项代码有效。但是现在我不得不更改上面的代码(由于线程),所以您的代码不再工作。看看我的最后一个问题。