开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 225|回复: 5
打印 上一主题 下一主题
收起左侧

[已解决] 多次执行任务

 关闭 [复制链接]
结帖率:80% (8/10)
跳转到指定楼层
楼主
发表于 昨天 19:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式   江西省赣州市
20精币
需要定时五秒执行任务,如果无任务则停止

任务是执行get或post请求拿到数据,并且添加到超级列表框内,每五秒执行一次,如果执行时间超过6分钟则停止执行 该任务废弃 并且每秒需要提示当前任务剩余多长时间

希望使用多线程进行

例如:超级列表框第2列是123,456,789,如果先拿到456的值则先展示456要求获取的值,然后把456这个任务从任务池删除 继续执行123和789的任务

最佳答案

查看完整内容

[e=1].版本 2 .支持库 eAPI, eThread, eUI .程序集 窗口程序集_启动窗口 .程序集变量 任务队列, 任务信息, , "待处理的任务队列" .程序集变量 线程池, 鱼刺类_线程池Ex .程序集变量 定时器ID, 整数型 .程序集变量 任务状态, 整数型, , "任务执行状态(0=停止,1=运行中)" .子程序 __启动窗口_创建完毕 ' 初始化线程池(最多3个并发线程) 线程池.创建 (3, 10) ' 初始化超级列表框 超级列表框1.插入列 (0, "任 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:96% (47/49)

签到天数: 5 天

沙发
发表于 昨天 19:34 | 只看该作者   河北省秦皇岛市
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
任务队列任务信息待处理的任务队列 
线程池鱼刺类_线程池Ex  
定时器ID整数型  
任务状态整数型任务执行状态(0=停止,1=运行中) 

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
' 初始化线程池(最多3个并发线程)
线程池.创建 (3, 10)

' 初始化超级列表框
超级列表框1.插入列 (0, "任务ID", 100, , , )
超级列表框1.插入列 (1, "参数", 100, , , )
超级列表框1.插入列 (2, "状态", 100, , , )
超级列表框1.插入列 (3, "剩余时间", 120, , , )
超级列表框1.插入列 (4, "结果", 300, , , )

' 启动定时器(每秒触发一次)
定时器ID = 置时钟间隔 (1000, &时钟事件)

' 初始状态为停止
任务状态 = 0
按钮1.标题 = "开始任务"
子程序名返回值类型公开备 注
_按钮1_被单击  
如果 (任务状态 = 0)
' 开始任务
任务状态 = 1
按钮1.标题 = "停止任务"

' 立即触发一次任务执行
执行任务 ()
' 停止任务
任务状态 = 0
按钮1.标题 = "开始任务"

子程序名返回值类型公开备 注
_按钮2_被单击  
变量名类 型静态数组备 注
任务ID整数型 
参数文本型 
' 添加测试任务
任务ID = 取数组成员数 (任务队列) + 1
参数 = 到文本 (任务ID * 111)

添加任务 (任务ID, 参数)
信息框 ("已添加任务: " & 参数, 0, )
子程序名返回值类型公开备 注
添加任务逻辑型 
参数名类 型参考可空数组备 注
任务ID整数型
请求参数文本型
变量名类 型静态数组备 注
新任务任务信息 
新任务.任务ID = 任务ID
新任务.请求参数 = 请求参数
新任务.开始时间 = 取现行时钟 ()
新任务.超时时间 = 360  ' 6分钟(360秒)

加入成员 (任务队列, 新任务)

' 在列表框中添加任务行
超级列表框1.插入行 (, 任务ID, , , , )
超级列表框1.置标题 (超级列表框1.取总行数 () - 1, 1, 请求参数)
超级列表框1.置标题 (超级列表框1.取总行数 () - 1, 2, "等待中")
超级列表框1.置标题 (超级列表框1.取总行数 () - 1, 3, "6:00")

返回 ()
子程序名返回值类型公开备 注
执行任务  
变量名类 型静态数组备 注
i整数型 
当前任务任务信息 
' 如果任务队列为空或任务已停止,则不执行
如果真 (取数组成员数 (任务队列) = 0 任务状态 = 0)
返回 ()

' 遍历任务队列,投递未执行的任务
计次循环首 (取数组成员数 (任务队列), i)
当前任务 = 任务队列 [i]

' 检查任务是否已超时
如果真 (取现行时钟 () - 当前任务.开始时间 > 当前任务.超时时间 * 1000)
任务超时处理 (i)
继续 ()

' 检查任务状态(这里简化处理,实际应增加状态标记)
线程池.投递任务 (&处理请求, i)
计次循环尾 ()
子程序名返回值类型公开备 注
处理请求  
参数名类 型参考可空数组备 注
任务索引整数型
变量名类 型静态数组备 注
当前任务任务信息 
请求URL文本型 
请求结果文本型 
开始时间整数型 
' 获取任务信息
互斥锁_锁定 (任务队列锁)
当前任务 = 任务队列 [任务索引]
互斥锁_解锁 (任务队列锁)

' 更新任务状态为执行中
线程_同步 (, , , , )
超级列表框1.置标题 (任务索引 - 1, 2, "执行中")
线程_同步结束 ()

' 记录开始时间
开始时间 = 取现行时钟 ()

' 执行HTTP请求(示例代码,实际需根据需求调整)
请求URL = "https://api.example.com/data?param=" & 当前任务.请求参数
请求结果 = HTTP_网页访问 (请求URL, 0, , , , , , , , , )

' 检查是否超时
如果真 (取现行时钟 () - 开始时间 > 当前任务.超时时间 * 1000)
线程_同步 (, , , , )
任务超时处理 (任务索引)
线程_同步结束 ()
返回 ()

' 更新UI显示结果
线程_同步 (, , , , )
超级列表框1.置标题 (任务索引 - 1, 2, "已完成")
超级列表框1.置标题 (任务索引 - 1, 4, 请求结果)

' 从任务队列中移除已完成的任务
删除成员 (任务队列, 任务索引)
线程_同步结束 ()
子程序名返回值类型公开备 注
任务超时处理  
参数名类 型参考可空数组备 注
任务索引整数型
' 更新UI显示超时
超级列表框1.置标题 (任务索引 - 1, 2, "已超时")
超级列表框1.置标题 (任务索引 - 1, 4, "任务执行超时,已放弃")

' 从任务队列中移除超时任务
删除成员 (任务队列, 任务索引)
子程序名返回值类型公开备 注
时钟事件  
变量名类 型静态数组备 注
i整数型 
当前任务任务信息 
已用时间整数型 
剩余时间整数型 
剩余分钟整数型 
剩余秒数文本型 
' 更新所有任务的剩余时间显示
计次循环首 (取数组成员数 (任务队列), i)
当前任务 = 任务队列 [i]
已用时间 = (取现行时钟 () - 当前任务.开始时间) / 1000
剩余时间 = 当前任务.超时时间 - 已用时间

如果真 (剩余时间 <= 0)
任务超时处理 (i)
继续 ()

剩余分钟 = 剩余时间 / 60
剩余秒数 = 到文本 (剩余时间 % 60)

' 补零处理
如果真 (取文本长度 (剩余秒数) = 1)
剩余秒数 = "0" & 剩余秒数

超级列表框1.置标题 (i - 1, 3, 到文本 (剩余分钟) & ":" & 剩余秒数)
计次循环尾 ()

' 每5秒执行一次任务
如果真 (取现行时钟 () % 5000 < 1000)  ' 约每5秒触发一次
执行任务 ()

子程序名返回值类型公开备 注
__启动窗口_将被销毁  
' 释放资源
线程池.销毁 ()
时钟事件 (定时器ID)


i支持库列表   支持库注释   
eAPI, eThread, eUI(未知支持库)

  
数据类型名公开备 注
任务信息 
成员名类 型传址数组备 注
任务ID整数型  
请求参数文本型  
请求类型整数型  
开始时间整数型  
超时时间整数型  
状态整数型  



[color=rgba(0, 0, 0, 0.85)]如需实际使用,需要根据具体的 HTTP 请求需求修改处理请求[color=rgba(0, 0, 0, 0.85)]子程序中的代码,包括请求 URL、请求方式、请求头和请求参数。

回复

使用道具 举报

签到天数: 13 天

板凳
发表于 昨天 22:19 | 只看该作者   河北省石家庄市
大佬 这是拿20精币定制来了
回复

使用道具 举报

结帖率:100% (4/4)

签到天数: 19 天

地板
发表于 4 小时前 | 只看该作者   江苏省无锡市
2224848 发表于 2025-7-23 03:06
[e=1].版本 2
.支持库 eAPI, eThread, eUI

牛逼   20精币拼命了
回复

使用道具 举报

结帖率:96% (47/49)

签到天数: 5 天

地下
发表于 2 小时前 | 只看该作者   河北省秦皇岛市
行云追流水 发表于 2025-7-23 10:59
牛逼   20精币拼命了

哈哈,拼了也没给我呀。
回复

使用道具 举报

结帖率:80% (8/10)

签到天数: 8 天

6
 楼主| 发表于 1 小时前 | 只看该作者   江西省赣州市
2224848 发表于 2025-7-23 03:06
[e=1].版本 2
.支持库 eAPI, eThread, eUI

可以付费私聊吗?这个问题好像还没解决这20精币先给你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表