2009-04-23 263 views
0

我想通過VB.NET中的音頻循環。VB.NET通過音頻循環

這裏是我的代碼:

While blnAlert = True 
      My.Computer.Audio.Play("C:\cat_1.wav") 
End While 

但它凍結的應用程序。

乾杯。

回答

2

您編寫的代碼將循環播放,沒有結束。循環條件如下

While blnAlert = True 

如果這是真的,循環將被輸入。循環內的代碼不會改變這個值,因此條件永遠是真的。這意味着循環不會結束。

您如何期待blnAlert的價值得到更新?你能發佈一些更多的代碼,或給我們更多的背景來解決問題嗎?

EDIT OP表明blnAlert將通過按鈕按壓

被設定爲False的問題是,作爲代碼被寫入取消按鈕不能被按壓。只要while循環被擊中,它就不會退出。該應用會凍結,因爲在您的代碼執行時,表單無法重新繪製或處理任何用戶輸入。您必須將控制權歸還給應用程序才能按取消按鈕。

可能最簡單的方法來解決這個問題是使用一個計時器。創建一個計時器,並在計時器滴答功能期間播放聲音一次並離開。使用取消按鈕停止計時器,從而停止播放聲音。

+0

blnAlert是一個布爾值,它會被設置爲false,當用戶點擊一個按鈕。循環結束不是問題。它不會播放音頻,只會凍結。 – burntsugar 2009-04-23 04:00:16

+1

My.Computer.Audio.Play有可選的參數,這意味着所有這些都可以在不使用定時器的情況下實現,請參閱我的答案。 – RobS 2009-04-23 11:28:34

2

我知道通過JaredPar給出將工作的答案,並已被接受,但這裏使用的事實,My.Computer.Audio.Play也接受可選參數,包括AudioPlayMode.BackgroundLoop其播放聲音不同的(和簡單的)解決方案直到調用My.Computer.Audio.Stop時才停止執行。

所以,開始播放聲音:

My.Computer.Audio.Play("mysound.wav", AudioPlayMode.BackgroundLoop) 

,並在按鈕單擊事件:

My.Computer.Audio.Stop()