SoundPlayer第一次调用时不播放声音

时间:2012-11-20 16:46:39

标签: c# visual-studio

我有一种非常简单的播放音效的方法:

private void PlaySound(string file){
   SoundPlayer sp = new SoundPlayer(@"Effects\" + file ' ".wav");
   sp.Play();

}

然后我这样做就叫它:

  

PlaySound( “音乐”);

现在,PlaySound(“音乐”)第一次被调用,它不会播放它。第二次和之后的所有其他时间它将会。

这里出了什么问题?

2 个答案:

答案 0 :(得分:1)

试试这个:

private void PlaySound(string file){
   using (SoundPlayer player = new SoundPlayer(@"Effects\" + file ' ".wav"))
    {
        // Use PlaySync to load and then play the sound.
        player.PlaySync();
    }
}

为什么要使用PlaySync?如果您只是在此程序中调用Play方法,程序将在播放声音之前终止。同步表示程序应在声音播放时暂停。

答案 1 :(得分:0)

你需要在播放之前调用load方法。如果文件尚未加载,则会通过调用Play来加载文件。这解释了文件未播放的原因第一次。

如果在.wav文件加载到内存之前调用Play,则会在播放开始前加载.wav文件。 -MSDN

LoadPlaySync都将阻止当前线程。更好的选择是使用LoadAsync异步加载文件。