开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 899|回复: 12
收起左侧

[已解决] (炫语言源码)帮分析为何会在WIN10句柄数会增加,WIN11不会?

 关闭 [复制链接]
结帖率:96% (26/27)
发表于 2024-7-13 18:57:55 | 显示全部楼层 |阅读模式   广东省惠州市
100精币
有没用炫语言的朋友,我写了个线程的源码模块.不知为何在WIN10X64系统下句柄数会增加.WIN11不会?
能帮忙分析下原因吗?线程回调函数是以类的事件执行的!!谢谢!
11.png
源码: 线程事件.rar (65.44 KB, 下载次数: 8)

最佳答案

查看完整内容

1. 检查你的线程模块是否有未正确释放的资源,比如文件句柄、窗口句柄、GDI对象等。每次创建完后要释放掉 2.确保线程在完成其任务后能够被正确地终止和清理。如果线程没有被正确地终止,也会一直持续占用系统资源。 3. 你说线程回调函数是以类的事件执行的,那么确保一下事件处理逻辑中没有无限循环或者长时间阻塞的操作,这也会导致线程无法正常结束。 还有种可能,可能就是不同版本的windows操作系统所使用的api有差异,win11可 ...

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

签到天数: 1 天

发表于 2024-7-13 18:57:56 | 显示全部楼层   上海市上海市
1. 检查你的线程模块是否有未正确释放的资源,比如文件句柄、窗口句柄、GDI对象等。每次创建完后要释放掉
2.确保线程在完成其任务后能够被正确地终止和清理。如果线程没有被正确地终止,也会一直持续占用系统资源。
3. 你说线程回调函数是以类的事件执行的,那么确保一下事件处理逻辑中没有无限循环或者长时间阻塞的操作,这也会导致线程无法正常结束。
还有种可能,可能就是不同版本的windows操作系统所使用的api有差异,win11可能做过优化

点评

谢谢,由于代码是在WIN11下写和测试的,没此BUG.发现在WIN10用,就来事了!!我也不找到原因,所以,看下大神们能否从代码中看出我那写错了!!   广东省惠州市  发表于 2024-7-13 19:28

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:96% (45/47)

签到天数: 2 天

发表于 2024-7-13 19:08:24 | 显示全部楼层   新疆维吾尔自治区阿克苏地区
呵呵,都还到你的深度啊。。。。
回复

使用道具 举报

结帖率:97% (590/607)

签到天数: 22 天

发表于 2024-7-13 19:15:27 | 显示全部楼层   河北省石家庄市
这个能做啥软件?

点评

WIN软件   广东省惠州市  发表于 2024-7-13 19:17
回复

使用道具 举报

结帖率:96% (26/27)

签到天数: 23 天

 楼主| 发表于 2024-7-13 19:16:16 | 显示全部楼层   广东省惠州市
xf702 发表于 2024-7-13 19:08
呵呵,都还到你的深度啊。。。。

炫语言不用什么深度的,有会c++的朋友,基本上算得上一用就会!我不懂C/C++也一样用了!!就是不知是不是我的c代码有什么没用对的地方!?

点评

贵在坚持,向你学习。。。   新疆维吾尔自治区阿克苏地区  发表于 2024-7-13 19:38
回复

使用道具 举报

签到天数: 1 天

发表于 2024-7-13 20:40:12 | 显示全部楼层   上海市上海市
        函数 UI事件 整型 按钮点击_按钮2(元素句柄 来源句柄, 逻辑型* 是否拦截)
                句柄型 JB_线程句柄 = 线程._线程启动(空, 1)
                如果 (JB_线程句柄 != 0) //线程可能还未执行就被结束,这就有可能导致未成功释放资源,这里你应该先判断现在状态是否空闲的,如果正在工作就不释放
                        HH_线程关闭句柄(JB_线程句柄)  

                调试输出("线程外:", (变整型)HH_线程取自线程ID())
                返回 0



函数 逻辑型 HH_线程销毁(句柄型 线程句柄)
        #嵌入代码
        DWORD dwExitCode;
        GetExitCodeThread(线程句柄, &dwExitCode);
        return TerminateThread(线程句柄, dwExitCode); //TerminateThread函数。这个函数强制终止线程,但是它不会释放线程的句柄。如果使用TerminateThread,你需要确保在线程被终止后调用CloseHandle来关闭句柄。否则也会消耗资源
        #嵌入代码_结束


HH_线程等待函数中,你使用了MsgWaitForMultipleObjects函数,这个函数会等待多个事件对象,包括窗口消息。如果消息队列中有未处理的消息,这可能导致函数无限期地等待,从而影响线程的结束。

类_多线程的_线程启动函数里,如果线程创建失败,你删除了传递给线程的参数,但没有关闭句柄。要注意在任何线程创建失败的情况下都关闭句柄。


HH_线程挂起HH_线程恢复函数中,如果一个线程被多次挂起,它需要被恢复相同次数才能继续执行。如果挂起和恢复的次数不匹配,可能会导致线程无法正常结束。所以这里要加个判断,只让他挂起一次,恢复一次,不让他重复挂起

如果类_多线程中有全局变量或静态成员,它们可能会在程序的生命周期内持续存在,从而导致句柄数增加。

你把这几些都优化一下应该差不多了
回复

使用道具 举报

签到天数: 1 天

发表于 2024-7-13 20:45:23 | 显示全部楼层   上海市上海市
你代码有点问题,要改的地方还挺多,我的回复在审核

点评

能,就发个改后的源码附件,先让我测试吗?谢谢!你上传附件要审核?   广东省惠州市  发表于 2024-7-13 20:53
回复

使用道具 举报

结帖率:96% (26/27)

签到天数: 23 天

 楼主| 发表于 2024-7-13 21:41:43 | 显示全部楼层   广东省惠州市
yjynxs 发表于 2024-7-13 20:45
你代码有点问题,要改的地方还挺多,我的回复在审核

jdfw.gif
谢谢,应该是我哪台win10电脑的错误.我虚拟机的win10系统又没此等问题!!怀虑是startallback开始菜单增强软件搞鬼,引起!!
回复

使用道具 举报

签到天数: 10 天

发表于 2024-7-13 22:03:36 | 显示全部楼层   重庆市重庆市
我猜一下,vHANDLE的原始类型是void *,你直接判断>0应该是不对,应该是不等于0吧
回复

使用道具 举报

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

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

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

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

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