关于循环等待问题
在一个长时等待的循环中,大家都是怎样做的?
[解决办法]
DoEvents
[解决办法]
Screen.MouseIcon = vbHourglass
完了之后再:
Screen.MouseIcon=vbDefault
DoEvents的话
确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。
[解决办法]
是的。DoEvents决对可以导致这个问题,chanfengsr(巉沨散人) 说的很清楚。
[解决办法]
"出现了不运行的状态 " 什么意思?
DoEvents作用是暂时停止当前过程或方法在DoEvents下面的语句执行,让系统得以处理消息队列中其它的消息任务,处理完再返回DoEvents下面的语句继续执行,不需要人手工点界面呀!
你的问题应不是DoEvents引起的
[解决办法]
小心使用DoEvents
[解决办法]
在一个长时等待的循环中,大家都是怎样做的?
1、 一般是用“进程条”来提醒循环的进程
2、用do 循环代替 for 循环,中间加doevents
3、DoEvents在一个循环中只能出现一次,不能嵌套,否则出错
[解决办法]
谁因为使用DoEvents出现问题,把程序代码发上来看看,这怎么能说小心使用呢??
不会是你们不会用吧!For循环==各种语句使用不当都会带来问题,难道都要所谓的小心使用??
只要方法对,DoEvents会出现什么问题?
你不可能在DoEvents暂停时,在去调用谁。即使当前过程被调用也没有什么影响,就像递归函数,自己调用自己哪里不行??
答:写错了不行!
[解决办法]
sub delay(delaytime)
dim start
start=timer
do while timer <start+delaytime
doevents
loop
end sub
doevents会导致程序执行效率降低
[解决办法]
我真的很吃惊阿,用了好几年VB了,还从来不知道DoEvents会有问题呢
“DoEvents会导致程序执行效率降低”,我的理解是:“DoEvents本来就是要你的程序执行效率降低的”,应该知道的是,在循环里,每执行一次DoEvents,你的程序就会释放你的cpu控制权(当然这是在你的特权等级范围内),此时,你的程序还有系统就会检查是否还有其他需要cpu的地方,执行完其他请求后cpu会回到DoEvents后面的语句继续执行。
话说回来了,如果你的程序脆弱到DoEvents(即时在循环里)都会影响你的性能的话,问题往往是你的代码不过好。
[解决办法]
我同意上面的说法,我用过如下的方法解决等待
1,鼠标沙漏
2,doevents
3, 进度条或者提示窗口