窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 数组 | 备 注 |
任务队列 | 任务信息 | 待处理的任务队列 |
线程池 | 鱼刺类_线程池Ex | |
定时器ID | 整数型 | |
任务状态 | 整数型 | 任务执行状态(0=停止,1=运行中) |
线程池.
创建 (3, 10
) 超级列表框1.
插入列 (0, "任务ID", 100, , ,
)超级列表框1.
插入列 (1, "参数", 100, , ,
)超级列表框1.
插入列 (2, "状态", 100, , ,
)超级列表框1.
插入列 (3, "剩余时间", 120, , ,
)超级列表框1.
插入列 (4, "结果", 300, , ,
) 定时器ID =
置时钟间隔 (1000, &时钟事件
) 任务状态 = 0
按钮1.标题 = "开始任务"
如果 (任务状态 = 0
)

任务状态 = 1

按钮1.标题 = "停止任务"

执行任务 ()

任务状态 = 0

按钮1.标题 = "开始任务"

变量名 | 类 型 | 静态 | 数组 | 备 注 |
任务ID | 整数型 | | |
参数 | 文本型 | | |
任务ID =
取数组成员数 (任务队列
) + 1
参数 =
到文本 (任务ID * 111
)添加任务 (任务ID, 参数
)信息框 ("已添加任务: " & 参数, 0,
)新任务.任务ID = 任务ID
新任务.请求参数 = 请求参数
新任务.开始时间 =
取现行时钟 ()新任务.超时时间 = 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, "执行中"
)线程_同步结束 () 开始时间 =
取现行时钟 () 请求URL = "https://api.example.com/data?param=" & 当前任务.请求参数
请求结果 =
HTTP_网页访问 (请求URL, 0, , , , , , , , ,
)
如果真 (取现行时钟 () - 开始时间 > 当前任务.超时时间 * 1000
)
线程_同步 (, , , ,
)
任务超时处理 (任务索引
)
线程_同步结束 ()
返回 () 线程_同步 (, , , ,
)超级列表框1.
置标题 (任务索引 - 1, 2, "已完成"
)超级列表框1.
置标题 (任务索引 - 1, 4, 请求结果
) 删除成员 (任务队列, 任务索引
)线程_同步结束 () 超级列表框1.
置标题 (任务索引 - 1, 2, "已超时"
)超级列表框1.
置标题 (任务索引 - 1, 4, "任务执行超时,已放弃"
) 删除成员 (任务队列, 任务索引
)变量名 | 类 型 | 静态 | 数组 | 备 注 |
i | 整数型 | | |
当前任务 | 任务信息 | | |
已用时间 | 整数型 | | |
剩余时间 | 整数型 | | |
剩余分钟 | 整数型 | | |
剩余秒数 | 文本型 | | |
计次循环首 (取数组成员数 (任务队列
), i
)
当前任务 = 任务队列
[i
]
已用时间 =
(取现行时钟 () - 当前任务.开始时间
) / 1000

剩余时间 = 当前任务.超时时间 - 已用时间


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

剩余分钟 = 剩余时间 / 60

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

如果真 (取文本长度 (剩余秒数
) = 1
)

剩余秒数 = "0" & 剩余秒数


超级列表框1.
置标题 (i - 1, 3,
到文本 (剩余分钟
) & ":" & 剩余秒数
)
计次循环尾 ()
如果真 (取现行时钟 () % 5000 < 1000
)
执行任务 ()
线程池.
销毁 ()时钟事件 (定时器ID
)|
eAPI, eThread, eUI | (未知支持库) |