我现在的需求是要循环执行某个函数,但是这个函数获取的数据有时候多,代码处理的时间就长,获取的数据短,程序处理时间就快,现在用的时钟组件,但是发现时钟组件会卡顿,或者数据少的时候也要等固定的时间。
有没有什么方式在循环执行的时候不卡App、同时周期不固定,最好是每次循环时可以自动调整时间,例如第一次用的时间久,程序自动等待执行完之后,再执行第二次,执行周期时间不固定,可以自动调整。
这个场景可以通过消息句柄配合多线程来实现,示例代码:
' 用于循环执行消息
变量 消息句柄2 为 消息句柄
事件 窗口创建完毕()
消息句柄2 = 创建 消息句柄()
结束 事件
事件 按钮2.被单击(来源对象 为 视图)
开始循环执行子程序("待传递的具体参数值")
结束 事件
函数 开始循环执行子程序(参数值 为 文本型)
异步执行首
' 这里执行耗时操作,以获取随机数为例,执行完之后延时500毫秒,通知消息句柄
变量 结果值 = 取随机数(100,200)
延时(500)
' 发给消息句柄,中转到UI线程
消息句柄2.发送消息(1,结果值)
异步执行尾
结束 函数
事件 消息句柄2.收到消息(源对象 为 消息句柄,消息ID 为 整数型,数据值 为 对象)
如果(消息ID == 1)
' 继续执行上面的函数,实现循环
开始循环执行子程序("")
结束 如果
结束 事件
事件 按钮3.被单击(来源对象 为 视图)
' 发给消息句柄ID为2,此时上方的事件因为只处理了消息ID=1的情况,因此将不会再执行子程序
消息句柄2.发送消息(2,"")
结束 事件