2015-02-09 59 views
1

我有4秒的wav文件。我可以在循環中播放它在c中的wav文件播放循環之間的時間間隔#

System.Media.SoundPlayer player = new System.Media.SoundPlayer(); 
player.Stream = Properties.Resources.ringtone; 
player.PlayLooping(); 

但是我在再次播放wav之前需要2秒的時間間隔。

我的意思是4 seconds(sound) + 2 seconds(no sound) + 4 seconds(sound) and so on...

它是如何更多鈔票。

+1

不要用[PlayLooping](https://msdn.microsoft.com/en-us/library/system.media.soundplayer.playlooping(V = vs.110)的.aspx),但有些同步版本(PlaySync?)並在播放之間放置延遲(如Thread.Sleep)。 – Sinatr 2015-02-09 10:46:31

回答

4
using System.Threading; 
using System.Threading.Tasks; 

System.Media.SoundPlayer player = new System.Media.SoundPlayer(); 
player.Stream = Properties.Resources.ringtone; 

Task.Run(()=> 
{ 
    while (true) 
    { 
     player.Play(); 
     Thread.Sleep(2000); 
    } 
}); 

如果您不想阻止gui,則需要放入後臺線程。

+0

它的工作只需要改變'Thread.Sleep(2000);'到'Thread.Sleep 6000);'(完成任務4 + 2秒)。謝謝 – Salim 2015-02-09 11:15:19

0
using System.Threading; 

System.Media.SoundPlayer player = new System.Media.SoundPlayer(); 
player.Stream = Properties.Resources.ringtone; 

while (condition) 
{ 
    player.Play(); 
    Thread.Sleep(6000); 
} 

您可以true交換condition了一個無限循環,如果你想讓它無限期播放,或一些其他條件取決於你的需求。如果這是主線程,但是您需要創建一個類似於背景工具的東西,以免鎖定您的表單。

+2

當我使用'Thread.Sleep'凍結GUI – Salim 2015-02-09 10:56:19

+0

因此,爲什麼我說你需要爲它創建一個新的線程 – 2015-02-09 11:21:29

0

如果您將其調用兩次或多次,Player.Play()無法正常工作。 使用此方法:player.PlaySync()。

player.PlaySync(); 
Thread.Sleep(2000); 
player.PlaySync(); 
Thread.Sleep(2000); 
...