While checkOK=False
。。。。
For i = 0 To 7
Select Case str(i)
Case 3
。。。。
checkOK=True
Case 2
。。。。
Case Else
。。。。
End Select
Next i
End While
。。。。。
直接运行这个程序,貌似while只执行了一边,后续程序就出错了。但是如果在调试的时候,在end while或前面某处设置一个 断点或者 msgbox,就没有问题。
这是为什么?
怎么样才知道到底是什么错误?
谢谢!
12 个解决方案
#1
贴完整的代码,这样看不出问题
#2
单这点代码,看不出来
#3
代码牵连的比较多,算了,就不贴了,我刚才试了一下,在end while前面加了一个sleep就好了。
#4
哦哦!!
#5
难道用了多线程?不然怎么用会sleep
#6
多线程调用
#7
加个这个,Application.DoEvents()
也行,
也行,
#8
这说明你的程序在循环之后执行的代码依赖于某个异步I/O操作的结果,sleep、msgbox以及断点都会使程序暂停,等到程序继续执行时,异步I/O已经完成了,所以可以正常运行。检查一下程序依赖的操作具体是什么,用代码来执行等待。
#9
是的,就是这样。while段是串口传输数据,后面的代码就是跟传输结果有关。
所以我用sleep就可以了吗?还是要改成其他的?
#10
checkOK在退出While循环之后就为True,那你在下次运行到While循环之前是否有将checkOK设为False,以及在哪里设置的?
sleep不是必须的,可以通过修改其它地方的代码避免使用的
sleep不是必须的,可以通过修改其它地方的代码避免使用的
#11
checkOK在while开始之前就初始为false了。
就是说还是代码有错误了。
因为,如果不加断点,我在后面查了一下,每次返回的传输结果都是不一样的。有时候他只执行一次while。
就是说还是代码有错误了。
因为,如果不加断点,我在后面查了一下,每次返回的传输结果都是不一样的。有时候他只执行一次while。
#12
最好是等待操作完成,如果无法得知操作何时完成,就只能用Sleep的方式了。
#1
贴完整的代码,这样看不出问题
#2
单这点代码,看不出来
#3
代码牵连的比较多,算了,就不贴了,我刚才试了一下,在end while前面加了一个sleep就好了。
#4
哦哦!!
#5
难道用了多线程?不然怎么用会sleep
#6
多线程调用
#7
加个这个,Application.DoEvents()
也行,
也行,
#8
这说明你的程序在循环之后执行的代码依赖于某个异步I/O操作的结果,sleep、msgbox以及断点都会使程序暂停,等到程序继续执行时,异步I/O已经完成了,所以可以正常运行。检查一下程序依赖的操作具体是什么,用代码来执行等待。
#9
是的,就是这样。while段是串口传输数据,后面的代码就是跟传输结果有关。
所以我用sleep就可以了吗?还是要改成其他的?
#10
checkOK在退出While循环之后就为True,那你在下次运行到While循环之前是否有将checkOK设为False,以及在哪里设置的?
sleep不是必须的,可以通过修改其它地方的代码避免使用的
sleep不是必须的,可以通过修改其它地方的代码避免使用的
#11
checkOK在while开始之前就初始为false了。
就是说还是代码有错误了。
因为,如果不加断点,我在后面查了一下,每次返回的传输结果都是不一样的。有时候他只执行一次while。
就是说还是代码有错误了。
因为,如果不加断点,我在后面查了一下,每次返回的传输结果都是不一样的。有时候他只执行一次while。
#12
最好是等待操作完成,如果无法得知操作何时完成,就只能用Sleep的方式了。