2012-11-20 76 views
0

從來就播放聲音效果一個非常簡單的方法:聲音播放不播放聲音第一次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/)」,其中的共識是「不,他們不應該」。 –

回答

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方法,程序將在聲音播放之前終止。同步指示程序應在播放聲音時暫停。

0

您需要在播放前調用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」 –