我需要在无限循环中读取一些变量,并且在它改变布尔状态的情况下它必须做一些事情。 我试图使用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
答案 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询问变量如何变化的原因。)这是做你想做的事情的首选方法,所以如果变量发生变化,你应该找到引发事件的方法。