关于此代码的一些问题,我有两个问题:
1)如何停止声音?声音在一个单独的线程中,我不知道如何阻止它们。
2)如果我继续按下键,这段代码将播放相同声音的很多次,这是不现实的(想象一下钢琴键盘:如果我按一个键,我继续按下它只有一个声音(冷杉)会玩)。如何解决这个问题呢? 我找到了一个解决方案,但现在有线程,我不知道该怎么做。
private void Form1_KeyDown(object sender, KeyPressEventArgs e)
{
[...] // Other code
th = new Thread(press));
th.Start(new object[] { key, name });
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
[...] // Other code
th = new Thread(leave);
th.Start(new object[] { key, name });
}
private void press(object data)
{
[...] // Other code
playSound(name);
}
private void leave(object data)
{
[...] // Other code
stopSound(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 :(得分:0)
将线程创建为类中的变量,以便可以随时访问它。
使用Handled Property防止再次处理事件
e.Handled = true;