加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB中DoEvents的用途

发布时间:2020-12-17 08:19:44 所属栏目:百科 来源:网络整理
导读:暂时挂起当前任务,转而完成队列中等待的任务后,再返回当前任务 比如: 如果不用此语句,在你的循环中可能导致你离开窗口处理其它任务(程序)会非常的慢,而用此语句之后,会根据队列中等待的任务状态进行处理,尽可能不影响你程序运行中做其它的工作。 转移
 暂时挂起当前任务,转而完成队列中等待的任务后,再返回当前任务
   比如: 如果不用此语句,在你的循环中可能导致你离开窗口处理其它任务(程序)会非常的慢,而用此语句之后,会根据队列中等待的任务状态进行处理,尽可能不影响你程序运行中做其它的工作。

转移到下一个控件进行事件响应时,例如,窗体卸载,即将打印,即将CSV,在对记录集进行操作时对其他

处理其它事件是什么呢?顾名思意,就是先行处理程序里其它正在发生的事件,当程序陷入回圈时,整个程序都会停在处理回圈上,当回圈尚未被处理结束,程序便一直被停摆,在这个时间内而有其它事件发生时,VB会视而不见,为了解决这个麻烦的问题,DoEvents便是因此而但生。

windows系统是多任务系统,多个任务可以同时运行,而实际上,这些任务是处在一个任务队列中的,根据CPU分配的时间片而轮流执行,因为这个循环时间很快,所以我们就感觉它们是在同时运行的。而VB的DoEvents的作用,就是暂时停止自身运行(术语叫挂起),让系统任务队列中的其他任务先运行。这个有什么作用呢?当VB程序运行一个很大的循环时,由于占用CPU时间太多,会使系统出现类似死机一样的状态,这时如果在循环中用DoEvents语句,就可以把占用的时间让出一部分给其他软件,从而改善系统的运行效能。

打个通俗的比方吧:很多人排队买火车票,轮到你了,恰巧你的手机响了,这时如果你接听手机而又占着售票窗口,那么后面的人就都得等你了,而如果你让下一个人先买,自己接完电话再买,这样整个队列的行进速度是不是就快些?这就是DoEvents的作用! 
   在一些不断循环查询中,因为太占用计算机,已知用户的其他事情和操作都得不到计算机的响应。
为了解决这个问题,在循环内加入VB DoEvents指令,每次循环到这里,就看一下有没有什么紧要的事情要做。 

EX:

For N = 1 To 100000

Me.Caption = N

Next

按程序的流程来说,Me.Caption的内容会依序由1开始显示到100000,可是事时上程序却停顿一会,并直接跳到显示100000,这并不是电脑速度很快的缘故,而是VB正忙於For ... Next ...回圈,而不处理其它正在发生的事件。为了解决这个问题,DoEvents函式就要上场了。

DoEvents


还有一例:

Open "stupids.txt" For Input As #1

Do Until EOF(1)

Line Input #1,MyStr

Text1.Text = Text1.Text + MyStr + vbCrlf

Loop

Close #1

照理说可以看到文字一段一段被放入TextBox,可是结果也是停顿一段时间後,整个TextBox就会突然出现所有的文字。解决方法就是加入DoEvents。

DoEvents

Close #1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读