Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共151 条记录, 每页显示 10 条, 页签: [1] [2][3][4][5][6][7][8] ...[16]
[浏览完整版]

标题:[分享]暂停循环实例(公开源码)

1楼
黄训良 发表于:2015/12/6 12:45:00

   

   循环暂停,是非常实用的功能, lsy老师的“暂停循环实例”没有公开源码,因工作需要自己写吧!自己愚钝,花了半天的时间(不用MessageBox),经过n次测试才写了出来,核心代码只有47字。功能如下:

     循环【表A】,每循环一行就去执行一个任务,执行任务这个时间就暂停循环,收到任务结束的信息后,恢复循环!

优点:代码简洁,循环结束什么都不用去“销毁”。
缺点:循环期间CPU占用率在18%-25%,循环结束很快下降到正常水平。
要求:代码必须严谨(务必返回恢复循环的值),避免造成死循环!
应用:1、任务完成时间不太长的情况。2、暂停后面的代码执行。


(有10人需要就公开源码)  

 

 



以下内容只有回复后才可以浏览
[此贴子已经被作者于2015/12/15 12:56:44编辑过]
2楼
freeants 发表于:2015/12/6 13:04:00
需要哈 ,多谢
3楼
qianqian1530 发表于:2015/12/6 13:42:00
'''
Vars("Mark1") = True
If Vars("s") Is Nothing  Then
    Vars("s") = 1
End If
Dim Sum As Integer
Dim i As Integer
For i = Vars("s") To 100
    If Vars("Mark1")  Then
        Sum = Sum + i
    Else
        Vars("s") = i
    End If
Next

Output.Show(Sum)



暂停
Vars("Mark1") = False
4楼
黄训良 发表于:2015/12/6 14:04:00
以下是引用qianqian1530在2015/12/6 13:42:00的发言:
'''
Vars("Mark1") = True
If Vars("s") Is Nothing  Then
    Vars("s") = 1
End If
Dim Sum As Integer
Dim i As Integer
For i = Vars("s") To 100
    If Vars("Mark1")  Then
        Sum = Sum + i
    Else
        Vars("s") = i
    End If
Next

Output.Show(Sum)



暂停
Vars("Mark1") = False

这个已测试过,是再次启动循环,并非暂停。
5楼
大红袍 发表于:2015/12/6 14:12:00

Do Until vars("开关") = False

    'Application.DoEvents

Loop

6楼
gua12gua 发表于:2015/12/6 14:59:00
楼主分享呗
7楼
shenyl0211 发表于:2015/12/6 15:04:00
好注意,谢分享
8楼
发表于:2015/12/6 15:06:00
以下是引用gua12gua在2015/12/6 14:59:00的发言:
楼主分享呗

难得啊,第一次看见老兄回帖没用 ddddd

9楼
发表于:2015/12/6 15:12:00

楼主:

  个人感觉,这种用例,用循环暂停不如用队列。用变量通知一个执行一个。

 

10楼
黄训良 发表于:2015/12/6 18:25:00
以下是引用在2015/12/6 15:12:00的发言:

楼主:

  个人感觉,这种用例,用循环暂停不如用队列。用变量通知一个执行一个。

 

分享一下吧!

共151 条记录, 每页显示 10 条, 页签: [1] [2][3][4][5][6][7][8] ...[16]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 4 queries.