2009-04-23 186 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()