我想通过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