1. WAOYOU首页
  2. 编程
  3. 易语言

易语言句柄数过高怎么解决

使用易语言过程中,因为利用到多线程,句柄数总是增加,时间久了难免会崩溃。句柄数过高怎么解决这个问题困扰了很久,但是一直没有找到有效办法,包括使用关闭线程句柄()命令都无法解决。

本文分两步解决句柄数过高的问题

1、要实现关闭,必须要解决的是线程句柄的传递。

2、利用队列,按序先进先出的关闭执行完毕的线程,来达到解决句柄数过高的问题。

易语言句柄数过高怎么解决

易语言线程句柄如何传递到线程

首先我们要在线程启动时,把获取到的线程句柄传递给线程内,然后在线程执行完毕时,再把线程句柄传递给用来关闭的子线程,这样保证线程执行完毕才会被关闭。

1、引用DLL命令,启用API_复制内存(),可使用API_复制内存()的DLL命令来实现线程句柄的传递

.版本 2

.DLL命令 API_复制内存, , “kernel32”, “RtlMoveMemory”, , RtlMoveMemory
.参数 Destination, 整数型, 传址, 复制到此指针
.参数 Source, 整数型, , 被复制的指针
.参数 Length, 整数型, , 长度

易语言句柄数过高怎么解决
引用DLL命令,启用API_复制内存()

2、启动线程时传递线程句柄给线程

线程句柄 = 线程_启动多参_文本型 (&方式一, 取变量地址 (线程句柄), t, , , , )

易语言句柄数过高怎么解决
启动线程时传递线程句柄给线程

3、在线程内使用API_复制内存()获取到线程句柄

易语言句柄数过高怎么解决
线程执行完毕后,利用队列来实现关闭线程句柄

线程执行完毕后,利用队列来实现关闭线程句柄

这里使用队列可以按顺序依次关闭线程,避免出现意外的情况出现。

1、在队列任务中,把线程句柄利用线程池投递给结束任务

易语言句柄数过高怎么解决
把线程句柄利用线程池投递给结束线程

2、在结束任务中使用关闭句柄()来关闭主程序的线程句柄

易语言句柄数过高怎么解决
结束任务中使用关闭句柄()来关闭主程序的线程句柄

 

通过测试发现,句柄数有效得到控制,只保留几个循环的线程的句柄数,软件的稳定性也进一步得到提升。本文使用的模块有精易模块,鱼刺多线程模块。

易语言句柄数过高怎么解决

原创文章,作者:阳光,如若转载,请注明出处:https://www.waoyou.com/507.html

声明:本文观点不代表WAOYOU立场,转载请联系文章原作者。如文章内容或图片涉及版权,敬请联系本站进行删除。WAOYOU,陪你一起看世界!

联系我们

在线咨询:点击这里给我发消息

电话:17638350532

工作时间:周一至周五,9:30-18:30,节假日休息

QR code