
学术讨论-邵琪巧妙地利用Timet计时器解决了VB中循环引起的虚假死亡现象何炜(甘肃天水职业技术学院,天水741000)[摘要]目前正在使用vB语言编程如果遇到循环次数过多或循环嵌套次数过多的循环命令,则很容易出现错误死亡甚至死机的现象,并且用户无法在循环执行期间中断它. 本文研究和讨论此问题并提供解决方案. [关键词]Ⅷ;周期;进度条;打断;计时器计时器控制CLC编号: G634.67文档标识代码: A物品编号: 1008-6609(2017)11-0082·031简介正在使用Ⅶ语言编程在此过程中,如果循环命令过多或嵌套级别不足,循环太多,很容易引起错误的死亡甚至机器死机的现象,并且用户在循环执行期间不能中断. 随着操作系统的不断改进,这种情况现在已成为“程序无响应”现象. 在循环主体中,如果添加进度条以显示命令,则根本看不到进度显示. 如果要停止,各种命令按钮将不再起作用. 随着社会的发展需求,我们对软件的要求并不简短,而是更加注重人性化的操作. 例如,有一条命令需要执行10,000次. 在执行过程中,您应该能够随时了解运行状态,并且可以随时终止或暂停. 特别是在程序执行期间,CPU应该占用尽可能少的资源,而不会影响其他软件. 工作,以便我们耐心等待复杂的程序.

如果程序可以根据计算机的实际配置自动调整计算机的CPU使用率,那就太好了. 经过长期的探索,我终于找到了一个更好的解决方案: 使用Timer定时器控件可以设置周期时间,然后根据自己的需要设置参数来更改周期值,我们只是利用这种独特性巧妙地解决问题. 2提出的问题在使用高级语言程序进行编程的过程中,当处理相同且规则的重复操作时,简单的方法将使用循环语句来处理. 使用一个简单的程序来说明以下内容: 例如,计算s = 1 + 2 + 3 +. . . . . . 10 n如果程序要求从1增加到100,则该程序非常简单,使用如下循环语句命令: Fori = 1至100S = S + 1NextiMsgBoxS此程序命令非常简单,即从1至100,循环重复执行“ S = S”语句100次,找到结果. 该程序也可以很容易地被初学者掌握和理解. 该程序经常被用作初学者的累积教学示例. 但是,通常存在某些差异在理论和实践之间进行比较,以FOR循环命令为例,在使用编程命令的过程中,如果遇到较大的循环命令或循环嵌套,很容易出现死机甚至崩溃的情况,并且用户在使用过程中不会中断循环执行. 进度条也与许多软件不同. 通常只显示第一步和最后一步,不显示中间过程. 例如,如果我们要计算从l到1百万或从1到10张因此,即使配置和运行速度较高的计算机,该程序的执行也将完全不同,随着计算数量的增加,计算数据将继续增加,并且当达到计算机的计算极限时,错误的死亡或崩溃现象.

3初步解决方案那么我们如何解决这个问题?经过我自己的多次长期探索. 终于找到了更好的解决方案,那就是使用Ⅷ中的Timer定时器控件. 我们知道,计时器计时器控制功能是在指定的时间间隔内重复触发指定窗口的计时器事件. 我们可以看到该控件的功能与loop语句的相似之处. 唯一的区别是此控件可以设置循环. 时间,因此我们仅使用此独特功能即可解决问题. 现在,我们重写以前的程序,步骤如下: (1)添加控件: (为了使程序易于所有人阅读,控件使用默认名称)Timer Timer1放入循环主体,并且最初应设置为残疾人,即作者简介: 何玮(1971年1月),男,甘肃省天水市,本科,讲师,研究方向是计算机高级语言编程,计算机图形设计和影视制作. 技术. 一个82 —万方数据的探索·经验: 启用项为False按钮Commandl'用于控制程序的“开始”,“ Continue”按钮Command2'用于控制程序的“暂停”进度条ProgressBarl'用于显示并查看程序运行进度文本框Textl,用于显示i的当前值;文本框,用于显示S的当前值. (2)添加代码: Dim i as Double,用于控制循环运行的次数,由于数据量大,定义为双精度Dim S作为Double'用于计算和值私有子表格加载(1'程序初始,定义某些控件的初始值i = 0'初始循环数S = 0 '初始总和值Timerl. Interval = 10'以毫秒为单位设置计时器的运行速度,当前为10 ms ProgressBarl. Max = 10000'定义进度条的最大值ProgressBarl. Value = 0'初始进度条的进度,当前为0EndSubPrivate Sub Commandl Click()Timerl.Enabled = True'只要让计时器工作时,循环将启动EndSubPrivate Sub Timerl计时器(1'计时器控件),将循环主体放置为i = i + 1如果count <= 10000,则S = S + iProgressBarl. 值= i'显示当前进度Textl. text = -i'显示i Text2的当前值. text = -S'显示S EIseTimerl的当前值. Enabled = False'结束循环EndIfEndSubPrivate子Command2单击(1'控制循环结束或暂停按钮Timer1. Enabled = False'计时计时器停止并且循环结束. EndSub程序执行的主要过程是仅两个按钮控制计时器的“启用”和“禁用”计时器内部的IF语句控制程序是否结束两个文本框vb定时器,一个显示i值,一个显示S值,带有进度条,以便执行程序看起来并不单调,用户可以轻松确定程序需要执行多少时间.

修改程序后的好处是,在当前情况下,无论如何配置低端计算机,代码都可以平稳运行,并且可以随时暂停或停止,并显示进度条真正开始显示实际进度. 但是缺点是: 显然,存在更多的命令和更复杂的命令. 如果软件中有很多循环,则命令行将增加很多倍. 而且,尽管资源消耗变小了,但是运行时间却增加了数百倍. 4优化解决方案到目前为止,程序已经解决,尽管主要问题已经解决vb定时器,但是仍然存在很多不足,我们需要进一步分析和解决: 认真而深入的分析,第一个问题,程序运行时间过长. 直接使用For循环,大循环可能会导致过多的资源消耗,从而导致崩溃. 使用Timer控件时,会浪费资源并且运行时间太长. 但是,如果我们巧妙地将这两个方法结合在一起,将可以解决问题,因此我们可以获得更好的解决方案,即将Timerl中的所有命令视为

因此,我们很好地解决了第一个问题. 第二个问题是循环命令很多,程序变得复杂. 在改进的程序中使用了100个循环. 根据原始设计,我们需要添加100个Timer控件,以使程序变大且笨拙. 经过探索和思考,我们只需要使用选择语句来巧妙地解决问题. 该程序被重写如下: 首先定义变量K,然后通过按钮或命令控制其数据. Private Sub Timerl_Timer()'计时器控件,放置循环主体选择案例K'K是循环控制参数Case0 <循环主体1>案例1 <循环主体2>结束选择83. 万方数据学术讨论和体验看到周期增加了很多,但是命令并没有以指数方式增加,并且增加的并不多. 如果仍然觉得程序主体太长而无法编写和调试,则还可以使用该函数并按如下所示再次对其进行修改: Private Sub Timerl_Timer()'定时器控件,放置循环主体选择大小写K'K为循环控制参数情况0: 调用自定义函数ACase 1: 调用自定义函数BEnd SelectEnd Sub,以便我们很好地解决了第二个问题.
5结束语到目前为止,在探索设计之后,我们终于找到了一个更好的解决方案,即使用VB中的Timer定时器控件解决直接使用For循环的问题,该程序运行时间过长,而且很容易造成资源消耗. 大,导致崩溃. 使用Timer控件时,将浪费资源. 但是,如果我们将两者结合起来,也就是说,将Timer1中的所有命令都视为
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-281387-1.html
等我们军舰赶过去
梦一场