0

我需要在无限循环中读取一些变量,如果它改变布尔状态,它必须做一些事情。我尝试使用 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
4

2 回答 2

2

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

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

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

什么没有帮助:DoEvents 和 sleep

 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。

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

于 2013-05-17T17:45:34.567 回答
0

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

于 2013-05-17T18:35:54.510 回答