易语言创建线程挂起线程恢复线程销毁线程

线程创建CreateThread,线程挂起SuspendThread,线程恢复ResumeThread,线程销毁TerminateThread,都是kernel32的命令,我们自己封装这些线程的命令,就是便于我们理解他们的工作机制。

511遇见(www.511yj.com)

API源码:

.版本 2

.DLL命令 恢复线程, 整数型, "kernel32", "ResumeThread", , 恢复线程
    .参数 hThread, 整数型, , 线程的句柄

.DLL命令 销毁线程, 整数型, "kernel32", "TerminateThread", , 销毁线程
    .参数 hThread, 整数型, , 线程的句柄
    .参数 dwExitCode, 整数型, , 退出码0

.DLL命令 创建线程, 整数型, "kernel32", "CreateThread", , 创建线程
    .参数 lpThreadAttributes, 整数型, , 第一个参数表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。0
    .参数 dwStackSize, 整数型, , 第二个参数表示线程栈空间大小。传入0表示使用默认大小(1MB)。0
    .参数 子程序指针, 子程序指针, , 第三个参数表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。
    .参数 lpParameter, 整数型, , 第四个参数是传给线程函数的参数。0
    .参数 dwCreationFlags, 整数型, , 第五个参数指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。0
    .参数 线程Id, 整数型, , 第六个参数将返回线程的ID号,传入NULL表示不需要返回该线程ID号。

.DLL命令 挂起线程, 整数型, "kernel32", "SuspendThread", , 挂起线程
    .参数 hThread, 整数型, , 线程的句柄

易语言调用源码:

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

.程序集 窗口程序集_启动窗口
.程序集变量 许可证1, 整数型
.程序集变量 许可证2, 整数型
.程序集变量 线程句柄1, 整数型
.程序集变量 线程句柄2, 整数型

.子程序 _按钮_线程1_被单击

许可证1 = 创建进入许可证 ()
启动线程 (&子_多线程主程序, 许可证1, 线程句柄1)

.子程序 _按钮_线程2_被单击

许可证2 = 创建进入许可证 ()
启动线程 (&子_多线程主程序, 许可证2, 线程句柄2)

.子程序 子_多线程主程序
.参数 许可证, 整数型
.局部变量 i, 整数型

.计次循环首 (1000, i)
    进入许可区 (许可证)
    .判断开始 (许可证 = 许可证1)
        编辑框1.加入文本 (到文本 (i) + “我是线程1 |” + #换行符)
    .判断 (许可证 = 许可证2)
        编辑框1.加入文本 (“                 #” + 到文本 (i) + “  我是线程2” + #换行符)
    .默认


    .判断结束
    延迟 (1000)
    处理事件 ()
    退出许可区 (许可证)
.计次循环尾 ()
删除进入许可证 (许可证)


.子程序 _按钮_挂起线程1_被单击

挂起线程 (线程句柄1)

.子程序 _按钮_挂起线程2_被单击

挂起线程 (线程句柄2)


.子程序 _按钮_恢复线程1_被单击

恢复线程 (线程句柄1)

.子程序 _按钮_恢复线程2_被单击

恢复线程 (线程句柄2)

.子程序 _按钮_关闭线程1_被单击

销毁线程 (线程句柄1, 0)


.子程序 _按钮_关闭线程2_被单击


销毁线程 (线程句柄2, 0)

参考原文:第二课易语言大漠多线程API挂起恢复销毁线程

猜你喜欢

转载自blog.csdn.net/zcp528/article/details/106807650