我想通過VB.NET中的音頻循環。VB.NET通過音頻循環
這裏是我的代碼:
While blnAlert = True
My.Computer.Audio.Play("C:\cat_1.wav")
End While
但它凍結的應用程序。
乾杯。
我想通過VB.NET中的音頻循環。VB.NET通過音頻循環
這裏是我的代碼:
While blnAlert = True
My.Computer.Audio.Play("C:\cat_1.wav")
End While
但它凍結的應用程序。
乾杯。
您編寫的代碼將循環播放,沒有結束。循環條件如下
While blnAlert = True
如果這是真的,循環將被輸入。循環內的代碼不會改變這個值,因此條件永遠是真的。這意味着循環不會結束。
您如何期待blnAlert的價值得到更新?你能發佈一些更多的代碼,或給我們更多的背景來解決問題嗎?
EDIT OP表明blnAlert將通過按鈕按壓
被設定爲False的問題是,作爲代碼被寫入取消按鈕不能被按壓。只要while循環被擊中,它就不會退出。該應用會凍結,因爲在您的代碼執行時,表單無法重新繪製或處理任何用戶輸入。您必須將控制權歸還給應用程序才能按取消按鈕。
可能最簡單的方法來解決這個問題是使用一個計時器。創建一個計時器,並在計時器滴答功能期間播放聲音一次並離開。使用取消按鈕停止計時器,從而停止播放聲音。
我知道通過JaredPar給出將工作的答案,並已被接受,但這裏使用的事實,My.Computer.Audio.Play也接受可選參數,包括AudioPlayMode.BackgroundLoop其播放聲音不同的(和簡單的)解決方案直到調用My.Computer.Audio.Stop時才停止執行。
所以,開始播放聲音:
My.Computer.Audio.Play("mysound.wav", AudioPlayMode.BackgroundLoop)
,並在按鈕單擊事件:
My.Computer.Audio.Stop()
blnAlert是一個布爾值,它會被設置爲false,當用戶點擊一個按鈕。循環結束不是問題。它不會播放音頻,只會凍結。 – burntsugar 2009-04-23 04:00:16
My.Computer.Audio.Play有可選的參數,這意味着所有這些都可以在不使用定時器的情況下實現,請參閱我的答案。 – RobS 2009-04-23 11:28:34