【易语言】多线程程序崩溃 线程泄露解决办法

最近在写多线程一采集程序时遇到了程序崩溃自动关闭的显现,在网上查了下原因和解决方法,这里记录下,以备后用。

一般出现这种情况多在生成了程序后,调试时候数据不太多一般察觉不到。其原因是多线程对于双核CPU亲和性上的问题。解救方法如下:

先加入DLL:


1

2

3

4

5

6

7

8

9

10

11

12

13

.版本 2

     

.DLL命令 SetProcessAffinityMask, 整数型, , , 公开, 设置CPU亲和性 进程句柄 返回CPU号

    .参数 hProcess, 整数型

    .参数 hProcess, 整数型

     

.DLL命令 SetThreadAffinityMask, 整数型, , , 公开, 设置CPU亲和性 线程句柄

    .参数 hProcess, 整数型

    .参数 Mask, 整数型

     

.DLL命令 GetCurrentProcess, 整数型, , , 公开, 获取当前进程的一个伪句柄 一般是-1

     

.DLL命令 GetCurrentThread, 整数型, , , 公开, 获取当前线程的一个伪句柄 一般是-2

之后只需要在易代码开头(如__启动窗口_创建完毕时)前加入如下命令:


1

SetProcessAffinityMask (-1, 1)

现在再生成程序测试下,问题解决了吧?

希望对大家有用,最后感谢原作者。

时间: 2025-01-04 10:41:49

【易语言】多线程程序崩溃 线程泄露解决办法的相关文章

易语言怎样写双线程?一个线程循环找图。一个线程循环按键F2。

易语言怎样写双线程? 一个线程循环找图.一个线程循环按键F2. // .程序集变量 参数, 整数型 .程序集变量 线程句柄1, 整数型 .程序集变量 线程句柄2, 整数型 启动线程 (&子程序1, 参数,线程句柄1) 启动线程 (&子程序2, ,线程句柄2) // .子程序 子程序1 .参数 参数1, 整数型 信息框 (参数1, 0, ) 信息框 (“这是线程1的例子”, 0, ) // .子程序 子程序2 信息框 (“这是线程2的例子”, 0, ) // // 注意: 凡调用到COM接口

'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件的解决办法

前言: 本文的解决方法来自http://www.cnblogs.com/xionghui/archive/2012/04/11/2442404.html --感谢! 问题描述:新电脑装mysql后在cmd面板输入:mysql -uroot -p ,出现:'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件. 原因:没有配置环境变量! 解决方法:配置环境变量 在Path中加入mysql的安装目录下的bin目录 OK! 再次打开cmd: 后记:如有类似问题直接打开本文的感谢网址即可.

android sqlite3程序不存在的解决办法(转)

在android开发中,在使用命令行操作数据库sqlite时,有时候会遇到sqlite3 not found的问题.这是因为你的手机没有安装sqlite3程序.解决办法如下(两种办法结合起来解释的更清楚!!!): 方法1: sqlite3 not found的解决办法(转) 在Android开发方面,我是小白,起步没多久.最近用到了sqlite本地缓存数据,我希望像mysql一样通过命令行查看建立的表以及表中的数据,于是用adb shell进入,敲入sqlite3,提示 sqlite3: not

采用静态编译方式防止易语言小程序被误杀

用易语言开发的操作界面与VB和VC相比程序逻辑上是一致的,但对于中国人而言免去了程序阅读上的翻译过程,因而更为直观:然而,由于独立编译出来的exe文件通常在拷贝过程就会被360杀毒软件干死,会引起用户的不满和很多麻烦:网上搜索的资料显示,采用静态编译的方式可以明显降低被杀毒软件识别为病毒的可能性,为此搜索和整理了一些资料以供分享. 通常易语言开发平台本身在点击静态编译时会报找不到链接程序错误:无法定位链接器!请检查 tools\link.ini 中的配置是否正确 这个问题可以通过下载一个VC98

某些编辑器运行C程序闪退的解决办法

在某些C语言编辑器中运行C语言程序或点击生成的.exe文件出现闪退现象的解决办法,主要有两种,还有其它方法欢迎交流. 包含头文件<windows.h>,在程序末尾添加system("pause"); #include<windows.h> #include<stdio.h> void main(){ printf("闪退"); system("pause"); } 程序末尾添加getchar()或getch()

WPF PasswordBox鼠标进入时程序异常退出的解决办法

最近在开发了一个程序中用到了PasswordBox控件,但是在程序给别人用的时候,鼠标一进入控件时程序就异常退出,查了下windows日志,错误显示如下: 应用程序: WpfPasswordTest2.exe Framework 版本: v4.0.30319 说明: 应用程序通过 System.Environment.FailFast(string message) 请求终止进程. 消息: 不可恢复的系统错误. 堆栈: 在 System.Environment.FailFast(System.S

nodejs 服务器 崩溃 2种解决办法

用node启动server后,发现服务器不稳定,经常crash.我是用ssh远程登录的,ssh远程通道中断,或者Ctrl+C,都会使nodejs server崩溃掉. 一,node server 崩溃模拟 1,ssh远程登录到nodejs的服务器,并启动node server [[email protected] nodejs]# node server.js Server running at port 8000 2,中断ssh连接,这个时候在通过url访问,就不行了. 二,nohup的解决办

OCC平台转到VS2015下MFC程序调用控制台失败解决办法

文章转自:https://blog.csdn.net/c437yuyang/article/details/54944668 一直用vs2010对occ进行编译,前几天转到vs2015平台下,好不容易花了两天的时间重新配置好了,但是发现控制台无法输入输出,一开始没在意,但是后面调试时很不方便,就决定将控制台调回来. 一开始以为是程序出错,引入了不同的输入输出流函数等,导致流无法定位,于是在头文件里面屏蔽了相关的 #include <iostream> ,#include <fstream

小程序赋值联动的解决办法

data: { flagList: [ {"id": 1, "value": "值1"}, {"id": 2, "value": "值2"} ] } // 将data中的flagList赋给list,并对list得value进行赋空操作,最后输出flagList. onload: function(e) { let flagList = this.data.flagList; let l