yield在大循环中需要注意的一个情况

来源:互联网 发布:知乎 安卓下载 编辑:程序博客网 时间:2024/06/01 09:04

yield通常用于大循环中释放控制权,让界面鼠标得到刷新避免”卡死“。

比如

uf_fill_data{

dw_1.reset()

for i = 1 to 3

     yield()

     .......

     dw_1.insertrow(0)

next

}

如果遇到函数执行需要较长时间时,客户狂点鼠标触发执行这个函数,会出现异常。

避免的方法时放入一个flag

uf_fill_data_new{

if ib_busy then return

ib_busy = true

dw_1.reset()

for i = 1 to 3

    yield()

    ........

    dw_1.insertrow(0)

next

ib_busy = false

}

下图:正常的情况


下图:重复的情况



同时,这个新的小软件采用的是dw+json+php+apache+msssql2005+阿里ECS服务器 来做的。经过测试很稳定,用php来为dw提供数据感觉非常好。可以看我的另一篇文字介绍:http://blog.csdn.net/chengg0769/article/details/71106186



阅读全文
0 0
原创粉丝点击