VisualBasic6 - 连续读取变量

时间:2013-05-17 16:24:33

标签: loops vb6 infinite-loop

我需要在无限循环中读取一些变量,并且在它改变布尔状态的情况下它必须做一些事情。 我试图使用Do ... Loop但应用程序崩溃了。 在visual basic 6中有没有办法使用无限循环的无限循环?

我的代码:

Do
   asd1 = readValue1
   asd2 = readValue2
   If asd1 <> asd1ex Then
       Text1.Text = "yes"
   End If
   If asd2 <> asd2ex Then
       Text1.Text = "no"
   End If
Loop While True

2 个答案:

答案 0 :(得分:2)

制作计时器并在该计时器上检查状态,而不是循环。

解释后解释数据来自何处(异步COM组件的属性):

  

在实时客户端 - 服务器项目上使用vb6 IDE。我必须阅读一些变量   当其中一个更改状态时,它会发送一个套接字消息   服务器。随着睡眠它同样地卡住了

什么没有帮助: DoEvents和睡眠

 DoEvents 
 Sleep 100
可能会有所帮助,需要参考windows函数sleep。但VB6是单线程(一个用于UI,一个用于逻辑),所以你应该有办法摆脱循环。你真的想做什么?你能描述一下顶级吗?

您是在使用VB6 IDE还是在Office中使用VBA代码?

睡觉工作宣告: -

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

另见https://stackoverflow.com/a/4540553/1643558

如果您向用户显示表单以读取值1和2,则可以使用模式表单并在完成后单击按钮,并仅在您喜欢这些值时隐藏表单。然后不需要循环。也可以在模态窗体上显示错误MsgBox。

请参阅http://www.tek-tips.com/viewthread.cfm?qid=1117372

也许删除睡眠只保留DoEvents。

你也可以制作一个计时器并在该计时器上检查状态,而不是循环

答案 1 :(得分:0)

看起来你正在尝试设置一种事件处理程序。实际上,你的循环正在“监听”变量的变化。您没有解释变量如何变化,这很重要。如果改变任何变量也可以引发一个事件,那么你就可以自由回家 - 你可以摆脱你的循环并使用事件处理程序发送套接字消息。 (这可能是Deanna询问变量如何变化的原因。)这是做你想做的事情的首选方法,所以如果变量发生变化,你应该找到引发事件的方法。