如何用MediaPlayer c停止声音#

问题描述:

我有这个功能,我必须使用MediaPlayer,因为我必须一起播放更多声音。这段代码可以工作,但声音并不停止在关键帧上(我尝试了一些代码,但没有工作)。我怎样才能做到stopSound功能? Thank'you!如何用MediaPlayer c停止声音#

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) 
{ 
    ??? 
} 
+0

入住这https://msdn.microsoft.com/en-us/library/system.windows.media.mediaplayer.stop(v=vs.110).aspx – PiLHA

+1

当然,该代码有效。但现在我不得不改变上面的代码(由于线程),所以你的代码不再工作。看看我的最后一个问题。 – Poppo

如果您存储您在List<MediaPlayer>创建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); 
    } 
}