声音播放不播放声音第一次it's称为

问题描述:

从来就播放声音效果一个非常简单的方法:声音播放不播放声音第一次it's称为

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

} 

那我这个做叫它:

PlaySound(”音乐”);

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

这里有什么问题吗?

+0

使用调试器? –

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

试试这个:

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方法,程序将在声音播放之前终止。同步指示程序应在播放声音时暂停。

您需要在播放前调用load方法。如果文件尚未加载,则文件将被加载到Play的调用中。这解释了为什么文件不是第一次播放。

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

两个LoadPlaySync将阻止当前thread.A更好的选择是使用LoadAsync异步加载该文件。

+0

是否需要加载和播放声音的相同SoundPlayer实例? – marsrover

+0

yes right.check this out http://www.blackwasp.co.uk/PlayingWavFiles.aspx.Read the section“Preloading Sounds Asynchronously” –