易语言封装的启动线程是无法传递文本参数的,我们可以为这个要传递的文本申请一个内存地址,把这个地址传递过去,下面通过演示和封装来说明实现过程。

演示传递文本参数

1、创建一个文本型的变量,来存储要传递的文本
2、为这段文本申请内存,返回内存地址
3、把文本参数写到内存
4、启动线程,传递地址。
5、启动的主线程的参数设置为文本型,接受传进来的文本

易语言启动Java_线程传参

 

.版本 2
.支持库 spec
.支持库 EThread
 
.局部变量 文本参数, 文本型
.局部变量 传递地址, 整数型
 
文本参数 = “我是启动线程要传递的文本”
传递地址 = 申请内存 (取文本长度 (文本参数) + 1, 真)
写到内存 (到字节集 (文本参数), 传递地址, )
启动线程 (&主线程, 传递地址, )

主线程 

易语言启动Java_易语言启动Java_02

 

.版本 2
 
.子程序 主线程
.参数 文本参数, 文本型
 
输出调试文本 (文本参数)

封装传递文本参数

易语言启动Java_启动线程_03

 

.版本 2
.支持库 spec
.支持库 EThread
 
.子程序 启动线程_文本, 逻辑型
.参数 子程序, 子程序指针
.参数 文本参数, 文本型
.局部变量 传递地址, 整数型
 
传递地址 = 申请内存 (取文本长度 (文本参数) + 1, 真)
写到内存 (到字节集 (文本参数), 传递地址, )
返回 (启动线程 (子程序, 传递地址, ))

调用启动线程_文本

启动线程_文本 (&主线程, “我是启动线程要传递的文本”)

文本和数组传递文本型参数的两种方法

易语言启动Java_启动线程_04

 

.版本 2
.支持库 EThread
.支持库 spec

.程序集 窗口程序集1, , , 511遇见(www.511yj.com)
.程序集变量 文本数组, 文本型, , "0"

.子程序 _按钮1_被单击, , , 511遇见(www.511yj.com)
.局部变量 i, 整数型
.局部变量 变量, 文本型

.计次循环首 (100, i)
    变量 = 到文本 (i)  ' 变量是文本型哦
    启动线程 (&Thread1, 取变量数据地址 (变量))
    延迟 (2)  ' 为了不出乱码
.计次循环尾 ()

.子程序 Thread, , , 511遇见(www.511yj.com)
.参数 序号, 整数型

调试输出 (文本数组 [序号])
' 数组间接传递

.子程序 Thread1, , , 511遇见(www.511yj.com)
.参数 文本, 文本型

调试输出 (文本)
' 变量直接传递

.子程序 _按钮2_被单击, , , 511遇见(www.511yj.com)
.局部变量 i, 整数型

.计次循环首 (100, i)
    加入成员 (文本数组, 到文本 (i))
    延时 (1)  ' 保持有效时间范围
    启动线程 (&Thread, i)
.计次循环尾 ()