易语言封装的启动线程是无法传递文本参数的,我们可以为这个要传递的文本申请一个内存地址,把这个地址传递过去,下面通过演示和封装来说明实现过程。
演示传递文本参数
1、创建一个文本型的变量,来存储要传递的文本
2、为这段文本申请内存,返回内存地址
3、把文本参数写到内存
4、启动线程,传递地址。
5、启动的主线程的参数设置为文本型,接受传进来的文本
.版本 2
.支持库 spec
.支持库 EThread
.局部变量 文本参数, 文本型
.局部变量 传递地址, 整数型
文本参数 = “我是启动线程要传递的文本”
传递地址 = 申请内存 (取文本长度 (文本参数) + 1, 真)
写到内存 (到字节集 (文本参数), 传递地址, )
启动线程 (&主线程, 传递地址, )
主线程
.版本 2
.子程序 主线程
.参数 文本参数, 文本型
输出调试文本 (文本参数)
封装传递文本参数
.版本 2
.支持库 spec
.支持库 EThread
.子程序 启动线程_文本, 逻辑型
.参数 子程序, 子程序指针
.参数 文本参数, 文本型
.局部变量 传递地址, 整数型
传递地址 = 申请内存 (取文本长度 (文本参数) + 1, 真)
写到内存 (到字节集 (文本参数), 传递地址, )
返回 (启动线程 (子程序, 传递地址, ))
调用启动线程_文本
启动线程_文本 (&主线程, “我是启动线程要传递的文本”)
文本和数组传递文本型参数的两种方法
.版本 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)
.计次循环尾 ()