易语言里有延迟、延时,模块里也有程序延时,超级延时,之类的命名,但多线程里的脚本的暂停和恢复,还涉及到内部解绑,这里采用UI通知的方式,开始真正的暂停,使用死循环,不去调用系统接口,减少系统资源的占用。
大漠多线程脚本延时
.版本 2 .子程序 脚本延时, , , 用来控制脚本的暂停恢复 .参数 序号, 整数型 .参数 时间, 整数型 .局部变量 死循环, 逻辑型 死循环 = 真 ' 判断是否有结束 .如果真 (线程信息 [序号].是否结束) ' 解绑,退出之前,必须在本线程内解绑 线程信息 [序号].dm.UnBindWindow () 退出线程 (0) .如果真结束 ' 判断是否暂停 .如果真 (线程信息 [序号].是否暂停) 线程信息 [序号].线程状态 = #线程状态_暂停 多线程_异步通知UI (#通知类型_更新, 序号) ' 如果暂停时继续可以前台操作, 线程信息 [序号].dm.EnableBind (5) ' 开始真正的暂停,使用死循环,不去调用系统接口,减少系统资源的占用 .判断循环首 (死循环) ' 没有暂停 .如果真 (线程信息 [序号].是否暂停 = 假) 线程信息 [序号].线程状态 = #线程状态_正在运行 多线程_异步通知UI (#通知类型_更新, 序号) ' 开启后台 线程信息 [序号].dm.EnableBind (1) 跳出循环 () .如果真结束 ' 已经结束 .如果真 (线程信息 [序号].是否结束) ' 退出前,一定要在本线程内解绑 线程信息 [序号].dm.UnBindWindow () 退出线程 (0) .如果真结束 延时 (1) .判断循环尾 () .如果真结束 ' 再次判断线程状态是否正在运行, .如果真 (线程信息 [序号].线程状态 ≠ #线程状态_正在运行) 线程信息 [序号].线程状态 = #线程状态_正在运行 多线程_异步通知UI (#通知类型_更新, 序号) ' 开启后台 线程信息 [序号].dm.EnableBind (1) .如果真结束 延时 (时间)
优酷全部教程播单:http://i.youku.com/i/UNTU3NDYyODg0/playlists
交流群:521068947
本人QQ: 272586593