开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 217|回复: 11
收起左侧

[已解决] 子程序部分代码不执行问题

 关闭 [复制链接]
结帖率:95% (179/188)
发表于 前天 09:25 | 显示全部楼层 |阅读模式   湖北省宜昌市
11精币
直播监控停止直播录制子程序代码基本相同,为什么停止直播录制可以正常结束监控句柄,而直播监控子程序“下面红线区域没运行

求大佬指点

代码如下:

  
录制进程ID = 进程_创建Ex (ffmpeg, 命令, , #隐藏窗口, , )
如果 (录制进程ID = 0)
日志 (直播间主播名 + “录制启动失败!”)
超级列表框_直播信息.置标题 (超级列表框_直播信息.现行选中项, 8, “录制失败”)

超级列表框_直播信息.置标题 (超级列表框_直播信息.现行选中项, 9, 到文本 (录制进程ID))
超级列表框_直播信息.置标题 (超级列表框_直播信息.现行选中项, 8, “开始录制”)
日志 (直播间主播名 + “录制已启动,PID:”到文本 (录制进程ID))
程序_延时 (100)
现行选中项数值 = 超级列表框_直播信息.查找表项 (到文本 (录制进程ID), 0, 真, 9)
日志 (直播间主播名 + “所在行:”到文本 (现行选中项数值))
监控直播线程句柄 = 线程_启动 (&直播监控, 录制进程ID, )
日志 (直播间主播名 + “直播监控线程句柄:”到文本 (监控直播线程句柄))
超级列表框_直播信息.置标题 (现行选中项数值, 10, 到文本 (监控直播线程句柄))
超级列表框_直播信息.现行选中项 = -1

子程序名返回值类型公开备 注
直播监控 是否关播
参数名类 型参考可空数组备 注
录制进程ID整数型
变量名类 型静态数组备 注
监控直播线程句柄整数型 
直播间主播名文本型 
现行选中项数值整数型 
现行选中项数值 = 超级列表框_直播信息.查找表项 (到文本 (录制进程ID), , 真, 9)
调试输出 (现行选中项数值)
直播间主播名 = 超级列表框_直播信息.取标题 (现行选中项数值, 3)
日志 (直播间主播名 + “直播录制监控中。。。”)
判断循环首 (进程_ID是否有效 (录制进程ID))
' 调试输出 (直播间主播名 + “录制中。。。”)
程序_延时 (1000, )
判断循环尾 ()
日志 (直播间主播名 + “录制进程已无效,录制结束。。。”)
进程_结束 (录制进程ID)
超级列表框_直播信息.置标题 (现行选中项数值, 6, “”)
超级列表框_直播信息.置标题 (现行选中项数值, 7, “已停播”)
超级列表框_直播信息.置标题 (现行选中项数值, 8, “停止录制”)
超级列表框_直播信息.置标题 (现行选中项数值, 9, “”)
' 取出监控直播线程句柄
监控直播线程句柄 = 到整数 (超级列表框_直播信息.取标题 (现行选中项数值, 10))
日志 (直播间主播名 + “直播监控子程序:监控直播线程句柄:”到文本 (监控直播线程句柄))
[color= #ff0000] -----------------------------这里为什么没有运行-------------------------------------------------------------------------[/color]
如果 (线程_销毁 (监控直播线程句柄))
超级列表框_直播信息.置标题 (现行选中项数值, 10, “成功”)
超级列表框_直播信息.置标题 (现行选中项数值, 10, “失败”)
日志 (直播间主播名 + “直播监控子程序:销毁监控直播线程句柄。。。”)
如果 (关闭线程句柄 (监控直播线程句柄))
超级列表框_直播信息.置标题 (现行选中项数值, 10, “成功”)
超级列表框_直播信息.置标题 (现行选中项数值, 10, “失败”)
日志 (直播间主播名 + “直播监控子程序:关闭监控直播线程句柄。。。”)
[color= #ff0000] ------------------------------------------------------------------------------------------------------------------------[/color]
子程序名返回值类型公开备 注
停止直播录制  
参数名类 型参考可空数组备 注
录制进程ID整数型
直播间主播名文本型
变量名类 型静态数组备 注
现行选中项数值整数型 
监控直播线程句柄整数型 
现行选中项数值 = 超级列表框_直播信息.查找表项 (到文本 (录制进程ID), 0, 真, 9)
超级列表框_直播信息.置标题 (现行选中项数值, 6, “”)
超级列表框_直播信息.置标题 (现行选中项数值, 7, “已停播”)
超级列表框_直播信息.置标题 (现行选中项数值, 8, “停止录制”)
如果 (进程_ID是否有效 (录制进程ID))
如果 (进程_结束 (录制进程ID))
超级列表框_直播信息.置标题 (现行选中项数值, 9, “成功”)
超级列表框_直播信息.置标题 (现行选中项数值, 9, “失败”)

超级列表框_直播信息.置标题 (现行选中项数值, 9, “失败”)

监控直播线程句柄 = 到整数 (超级列表框_直播信息.取标题 (现行选中项数值, 10))  ' 取出监控直播线程句柄
如果 (线程_取状态 (监控直播线程句柄) = 1)  ' 线程正在运行
如果 (线程_销毁 (监控直播线程句柄))
超级列表框_直播信息.置标题 (现行选中项数值, 10, “成功”)
超级列表框_直播信息.置标题 (现行选中项数值, 10, “失败”)

如果 (关闭线程句柄 (监控直播线程句柄))
超级列表框_直播信息.置标题 (现行选中项数值, 10, “成功”)
超级列表框_直播信息.置标题 (现行选中项数值, 10, “失败”)


超级列表框_直播信息.取消表项选择 (现行选中项数值)
日志 (直播间主播名 + “录制已停止”)
超级列表框_直播信息.现行选中项 = -1


i支持库列表   支持库注释   
iext扩展界面支持库一
spec特殊功能支持库
EThread多线程支持库

最佳答案

查看完整内容

直播监控 子程序代码是运行在监控线程内部的。当你执行 线程_销毁 (监控直播线程句柄) 时,你实际上是在命令当前正在运行的这个线程立即停止。 一旦执行了这一行,线程瞬间死亡,CPU 立即停止处理该线程的任何后续指令。因此,紧跟在它后面的 超级列表框...置标题 (“成功”) 以及后续代码没有机会被执行。 ...

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

签到天数: 9 天

发表于 前天 09:25 | 显示全部楼层   重庆市重庆市
直播监控 子程序代码是运行在监控线程内部的。当你执行 线程_销毁 (监控直播线程句柄) 时,你实际上是在命令当前正在运行的这个线程立即停止。
一旦执行了这一行,线程瞬间死亡,CPU 立即停止处理该线程的任何后续指令。因此,紧跟在它后面的 超级列表框...置标题 (“成功”) 以及后续代码没有机会被执行。

点评

你不需要使用 线程_销毁 来结束自己。只要代码运行到子程序的末尾(或者执行 返回 ()),线程就会自然结束。   重庆市重庆市  发表于 昨天 14:35
回复

使用道具 举报

结帖率:100% (16/16)

签到天数: 8 天

发表于 前天 09:40 | 显示全部楼层   广东省广州市
如果 (线程_销毁 (监控直播线程句柄))
超级列表框_直播信息.置标题 (现行选中项数值, 10, “成功”)
超级列表框_直播信息.置标题 (现行选中项数值, 10, “失败”)

这里成功 失败 都没输出? 是的话有可能碰到暗桩了
新建一个子程序 把代码复制过去 调用新建的子程序
回复

使用道具 举报

结帖率:75% (6/8)

签到天数: 9 天

发表于 前天 10:03 | 显示全部楼层   广东省深圳市
你在没运行的代码前加一个  程序_延时 (1, )  就可以了
回复

使用道具 举报

结帖率:80% (4/5)

签到天数: 8 天

发表于 前天 10:22 | 显示全部楼层   上海市上海市
执行的太快没覆盖了,置标题的前面都加上延时试试,还有你线程里置标题不加许可证容易崩
回复

使用道具 举报

结帖率:81% (13/16)

签到天数: 6 天

发表于 前天 11:25 | 显示全部楼层   四川省巴中市
超级列表框有那么多列么
回复

使用道具 举报

结帖率:95% (179/188)

签到天数: 8 天

 楼主| 发表于 前天 17:45 | 显示全部楼层   湖北省宜昌市
丶TiGa 发表于 2026-2-7 09:40
如果 (线程_销毁 (监控直播线程句柄))
超级列表框_直播信息.置标题 (现行选中项数值, 10, “成功”)
超级列 ...

是的 我调试过很多次 一直搞不定
回复

使用道具 举报

结帖率:95% (179/188)

签到天数: 8 天

 楼主| 发表于 前天 17:46 | 显示全部楼层   湖北省宜昌市
阿素里戈沃里嘚 发表于 2026-2-7 10:03
你在没运行的代码前加一个  程序_延时 (1, )  就可以了

如果说执行太快 需要加延时的话,那我就更纳闷了,下面的“停止直播录制”子程序这里也是没有延时,但是这个运行正常,正常输出
回复

使用道具 举报

结帖率:95% (179/188)

签到天数: 8 天

 楼主| 发表于 前天 17:46 | 显示全部楼层   湖北省宜昌市
随心o 发表于 2026-2-7 11:25
超级列表框有那么多列么

多列 为了防止错乱,都是记录了pid 和线程句柄,然后需要的时候直接查找的
回复

使用道具 举报

结帖率:75% (6/8)

签到天数: 9 天

发表于 昨天 00:27 | 显示全部楼层   广东省深圳市
易小妞 发表于 2026-2-7 17:46
如果说执行太快 需要加延时的话,那我就更纳闷了,下面的“停止直播录制”子程序这里也是没有延时,但是 ...

尽量少用点程序_延时,延迟这种操作,因为这会卡住你的代码然后去执行其他的消息,从而把你主线程的栈空间搞乱;所以就会有很多你看不懂的东西出现;真的需要这种操作,建议你弄个时钟来跑。。。
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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