首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

利用DoEvents可以实现多线程同时处理的效果吗?解决方案

2012-02-04 
利用DoEvents可以实现多线程同时处理的效果吗?Private Sub Sub1()Dim i as longdo while trueii+1doSomeT

利用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使用将导致程序不可控或程序执行流程不可意料.最终导致不可意料的结果.

热点排行