我使用Visual Studio 2012构建Queue-System程序,并使用System.Media.SoundPlayer播放声音。这是我的代码形式:
public static SoundPlayer player = new System.Media.SoundPlayer();
private void callNumber()
{
update_number_to_database();
player = new System.Media.SoundPlayer("C:\1.wav");
player.PlaySync();
player = new System.Media.SoundPlayer("C:\2.wav");
player.PlaySync();
}
因此,当有人按下按钮时,它将调用函数callNumber()。在此功能中,它将更新数据库中的某些内容并按顺序播放一些声音。例如:
号码| 1 | 2 | 3 |去房间1
我喜欢使用SoundPlayer因为它太棒了:使用PlaySync我不需要关心声音的顺序。它总是等待完成前一个声音,并将下一个声音放入队列中。
然而,我的问题是,函数callNumber必须等到完成声音才能调用它。但我想要的是:当我按下按钮时,它应立即运行函数callNumber,并且声音将在队列中。
Iam尝试使用WMPLib.WindowsMediaPlayer作为另一种方式,但不像SoundPlayer那么简单,我需要将所有文件放在播放列表中并播放它们。但是,如果我快速按下按钮2次呢?
很抱歉我的英语不好,但我仍难以描述我的问题。
答案 0 :(得分:0)
我从您的描述中了解到:
您可以使用yourPlayer.stop()或类似的东西在重播其他声音之前先停止声音。
您可以通过创建停止播放器的其他功能然后调用callNumber()函数来完成此操作。