易语言CreateThread启动线程传递多个类型参数

易语言启动线程传递文本参数
易语言启动线程传递多个类型变量

自定义传递的参数结构

这里我们只定义了文本和整数,你要传递其他的,可以再定义几个,或者多个。

.版本 2
 
.数据类型 参数结构
    .成员 整数, 整数型
    .成员 文本, 文本型

封装 API_启动线程

第二参数是我们传递的参数,这里先定义成整数

  1. .版本 2
  2.  
  3. .子程序 API_启动线程, 整数型
  4. .参数 子程序指针, 子程序指针
  5. .参数 整数参数, 整数型, 可空
  6. .局部变量 hThread, 整数型
  7.  
  8. hThread = CreateThread (0, 0, 子程序指针, 整数参数, 0, 0)  ' 返回线程句柄
  9. CloseHandle (hThread)  ' 关闭线程句柄
  10. 返回 (hThread)

多参传递调用示范

先定义一个变量:参数结构,它的类型就是我们自定义的数据结构类型,
通过lstrcatA (参数结构, 0)进行参数传递。

.版本 2
 
.局部变量 参数结构, 参数结构, 静态
 
参数结构.整数 = 20200606
参数结构.文本 = “文本型内容”
API_启动线程 (&线程主线程, lstrcatA (参数结构, 0))

线程主线程

在启动的线程主线程里,我们采用了RtlMoveMemory (参数结构, 参数, 4 × 2) ' 复制内存 结构数据,把传递进来的参数给接受过来。

  1. .版本 2
  2.  
  3. .子程序 线程主线程
  4. .参数 参数, 整数型
  5. .局部变量 参数结构, 参数结构
  6.  
  7. RtlMoveMemory (参数结构, 参数, 4 × 2)  ' 复制内存 结构数据
  8. 输出调试文本 (参数结构.文本, 参数结构.整数)

用到的API

.版本 2
 
.DLL命令 RtlMoveMemory
    .参数 Destination, 参数结构, 传址
    .参数 Source, 整数型
    .参数 Length, 整数型
 
.DLL命令 lstrcatA, 整数型, , "lstrcatA"
    .参数 lpString1, 参数结构, 传址, 此参数结构可以自定义
    .参数 lpString2, 整数型, 传址
 
.DLL命令 CreateThread, 整数型
    .参数 lpThreadAttributes, 整数型
    .参数 dwStackSize, 整数型
    .参数 lpStartAddress, 子程序指针
    .参数 lpParameter, 整数型
    .参数 dwCreationFlags, 整数型
    .参数 LpthreadId, 整数型, 传址
 
.DLL命令 CloseHandle, 逻辑型
    .参数 hObject, 整数型

发布日期:

所属分类: 易语言 标签: