大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> DoEvents应用

DoEvents应用

时间: 2021-07-31 作者:daque

让渡遏制权,再不让操纵体例处置其它的事变。doevents 因变量会归来一个 integer,以代办 visual basic 独力本子中翻开的窗体数量,比方,visual basic,专科版,在其它的运用步调中,doevents 归来 0。doevents 会将遏制权传给操纵体例。当操纵体例处置完部队中的事变,而且在 sendkeys 部队中的一切键也都已送出之后,归来遏制权。doevents 对于简化诸如承诺用户废除一个已启用的进程 — 比方搜罗一个文献 — 更加有效。对于长功夫进程,停止遏制权最佳运用准时器或经过萎任工作给 activex exe 元件来实行。此后,工作仍旧实足独力于运用步调,多工作及功夫片由操纵体例来处置。提防 保证以 doevents 停止遏制权的进程,在第一次 doevents 归来之前,不许再次被其余局部的代码挪用;要不会爆发不行预见的截止。其余,即使其它的运用步调大概会和本进程以不行先见的办法举行交互操纵,那么也不要运用 doevents,由于此时不许停止遏制权。运用 doevents纵然 timer 事变是后盾处置的最佳东西,对耗费时间极多的工作,情景更是如许,然而,doevents 因变量仍旧供给了一种废除工作的简单本领。比方,下列代码将表露一个 "process" 按钮,单击这个按钮时,它将形成 "cancel" 按钮。再次单击按钮又将阻碍正在实行的工作。'此按钮题目是 "process"private sub command1_click()'进程的一切范例都共享静态变量。  static blnprocessing as boolean  dim lngct as long  dim intyieldct as integer  dim dbldummy as double  '按下按钮时,检验和测定能否在处置  if blnprocessing then   '即使正在处置,则废除      blnprocessing = false  else      command1.caption = "cancel"      blnprocessing = true      lngct = 0   '实行第一百货商店万次浮点乘法计划。每一千次后,检验和测定能否要废除。      do while blnprocessing and (lngct < 1000000)        for intyieldct = 1 to 1000            lngct = lngct + 1            dbldummy = lngct * 3.14159        next intyieldct      'doevents 语句承诺其它事变爆发,囊括第二次按此按钮。        doevents      loop      blnprocessing = false      command1.caption = "process"      msgbox lngct & " multiplications were performed"  end ifend subdoevents 将遏制切换到操纵情况内核。只有此情况中的一切运用步调都有时机相应待处置事变,运用步调就又回复遏制。这不会使运用步调停止中心,但会使后盾事变不妨获得处置。这种协调的截止大概并不老是到达预期目的。比方,下述 click 事变代码在单击按钮后要从来等待十秒钟,尔后才表露一条消息。即使在按钮正在等候功夫单击它,则将以差异程序实行单击操纵。private sub command2_click()  static intclick as integer  dim intclicknumber as integer  dim dblendtime as double      '历次单击按钮时      '付与独一数值。  intclick = intclick + 1  intclicknumber = intclick      '等候十秒。  dblendtime = timer + 10#  do while dblendtime > timer      '不做任何工作,只是承诺      '其它运用步调处置      '它们的事变。      doevents  loop  msgbox "click " & intclicknumber & " is finished"end sub对于经过 doevents 停止遏制的事变进程,偶尔大概蓄意提防在 doevents 归来之前从新挪用这一进程。要不将无量无穷地挪用该进程,直到体例资源耗费殆尽。可姑且遏止控件,或象上例一律,运用一个静态的“标记”变量提防此事爆发。在运用全部数据时制止 doevents当一个因变量已经过 doevents 停止遏制时,可十分安定地再次挪用因变量。比方,下一进程将检验和测定质数并用 doevents 语句周期地启用其它运用步调处置事变:function primestatus (testval as long) as integer  dim lim as integer  primestatus = true  lim = sqr(testval)  for i = 2 to lim      if testval mod i = 0 then        primestatus = false        exit for      end if      if i mod 200 = 0 then doevents  next iend function该代码中每反复 200 次就挪用一次 doevents 语句。如许一来,当该情况的其他局部对事变作出相应时,只有有需要,primestatus 进程就可连接计划。商量在挪用 doevents 功夫爆发的工作。在其它窗体和运用步调处置事变时将休憩实行运用步调代码。那些事变之一有大概是一个按钮单击操纵,它将再次启用 primestatus 进程。这将引导从新加入 primestatus 进程的,然而,由于在因变量历次出当前,仓库都为其参数和限制变量调配了空间,以是重入不会激励辩论。固然,即使过多挪用 primestatus,则大概展示“溢出仓库空间”缺点。即使 primestatus 运用或变换模块级变量或全部数据,情景就会实足各别。此时,在 doevents 不妨归来之前实行 primestatus 的另一个范例,这将引导模块数据或全部数据的值实足各别于它们在挪用 doevents 之前的值。所以,primestatus 的截止将会难以预见。       之上代码来自: 源代码数据库(sourcedatabase)           暂时本子: 1.0.392               作家: shawls           部分网页: http://shawls.yeah.net             e-mail: shawfile@163.net                 qq: 9181729

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.