读书人

利用DoEvents可以实现多线程同时处理的

发布时间: 2012-02-04 15:43:08 作者: rapoo

利用DoEvents可以实现多线程同时处理的效果吗?
Private Sub Sub1()
Dim i as long
do while true
i=i+1
doSomeThing
DoEvents
loop
end Sub


Private Sub Sub2()
Dim j as long
do while true
j=j+1
doSomeThing
DoEvents
loop
end Sub


如果sub1及sub2先后运行起来,这两个Sub的关系是什么?
A. i=1,j=1;i=2,j=2;i=3,j=3......i=n,j=n........
B. i=1,i=2,i=3......i=n.....;j=1,j=2,j=3.......j=n
C. 其他结果?

请各位出招.......


[解决办法]
DoEvents的作用是释放CPU资源给Windows的其它任务,从而防止了进程的假死现象,但这个任务必须是Windows层面的。它不是将CPU资源释放给本进程的其它线程。合理的使用DoEvents是能加快程序响应的,效果上类似于多线程。
再者,VB对多线程的支持不佳这是总所周知的,所以DoEvents对VB而言很有用处。
[解决办法]
这两个SUB不会同时运行的,如果精心设计一些事件,两个SUB可以交替运行.你只要理解了什么是doevents就明白了,一个事件过程中超过两个doevents使用将导致程序不可控或程序执行流程不可意料.最终导致不可意料的结果.

读书人网 >VB

热点推荐