DoEvents函数详解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DoEvents函数详解

DoEvents函数的功能是:转让控制权,以便让操作系统处理其它的事件。?问:为什么要用doevents??A. 在需要用某一循环处理相当耗时或者很快速的代码时,就需要用到它,以便用户能在起处理过程中能做其他事情,即程序能被控制,而不是无响应状态?B. vb6.0中多线程vb代码极度不稳定,而且无法调试,所以vb中的多线程用的很少(注:是指vb的代码在多线程中运行时不稳定)?C. timer控件可以起到后台运行作用,但其是通过事件控制,一是不稳定,二是速度太慢,如果想用其处理高速又耗系统的代码更本不能达到预期的效果? 下面将其某些用法和难点简介如下:? ????? ????(注: 1.** 后面的代码表示如果在该处用了这个语句。2.例子中会用到API函数。3.以下例子都经vb6.0测试成功) ????? 一. 基本用法1.窗体启动时如果要处理的事务太多或者用sleep函数暂停,造成其很久都不能出现时怎么办? ????例如代码:? ????Public Declare Sub Sleep Lib kernel32 (ByVal dwMilliseconds As Long)此句写入模块 ????Private Sub Form_Load()? ????Show? ????**DoEvents??句3 ????Sleep 5000? ????End Sub? ????通常容易想到在sleep前加个show,但还是不能达到预想的效果,窗体虽然出来了,但好象只达到了一半,如果加上第3句,将看到效果大不相同 。 ????2.如果有个很耗时的循环导致程序不响应,怎么办?? ????例如:? ????Dim L As Long? ????For L = 1 To 1000000? ????** DoEvents? ????Next L? ????如果无**,在循环过程中程序无法处理事件,对于用户来说是不响应,无法控制的 ????3.想在循环中看到处理过程?? ????同样:? ????Dim L As Long? ????For L = 1 To 10000? ????** DoEvents? ????Text1.Text=Cstr(l)? ????Next L? ????无** 时将无法看到text1中的变化,而只在循环结束时看到最后结果 ????4.怎样中止循环?? ????如果有:? ????Private Sub Command1_Click()? ????Dim L As Long? ????Do? ?????L = L + 1? ?????Debug.Print L??在立即窗口中显示 ?????DoEvents? ????Loop? ????End Sub? ????会发现当关闭窗口后,debug中的数据仍然在变化,说明并没结束? ????需要如下:? ????Dim IsExit As Boolean? ????Private Sub Command1_Click()? ????Dim L As Long? ?????IsExit = False? ?????Do While DoEvents? ?????If IsExit = True Then Exit Do? ?????L = L + 1? ?????Loop? ????End Sub? ????? ????Private Sub Command2_Click()或者在form_unload模块中等等? ?????IsExit = True? ????End Sub? ????其中 isexit是全局变量? ????有些人喜欢用end语句来结束程序,小程序固然可以,但当太大,或者调用了某些特殊的api函数后可能导致预想不到的错误,如果装载了许多东西在程序结束时不处理将卸载很慢,而且这种做法也极不符合正规软件的要求...总之end语句毛病很多,此不详谈,建议少使用甚至不使用? 二. 其基本用法大概就这些,现在解析其中的一些[难点]? ????? ????1.为什么还是不能结束?? ????代码如下:? ????Dim IsExit As Boolean? ????Private Sub Command1_Click()? ????Dim L As Long? ?????IsExit = False? ?????Do? ?????If IsExit = True Then Exit Do 句0? ?????DoEvents ** 句1? ?????Text1.Text = CStr(L) ** 句2? ?????L = L + 1? ?????Loop? ????End Sub? ????? ????Private Sub Form_Load()? ????St

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档