命令名:等待线程
等待,直到指定线程结束或等待超时才返回。返回真表示等待成功。注意,在Linux下暂不支持超时等待。本命令为初级命令。
参数 | 数据类型 | 说明 |
线程句柄 | 整数型(int) | 可通过“启动线程”的第三个参数获取线程句柄。 |
等待时间 | 整数型(int) | 可以被省略。指定等待时间,单位为毫秒。如果为0或负数,或被省略,表示不限定等待时间。 |
我们可以通过等待线程来判断一个线程是否结束
.版本 2 .支持库 EThread .程序集 窗口程序集1 .程序集变量 线程句柄, 整数型 .子程序 _按钮1_被单击 启动线程 (&子程序1, , 线程句柄) .如果真 (等待线程 (线程句柄, )) 信息框 (“线程结束”, 0, ) 关闭线程句柄 (线程句柄) .如果真结束 .子程序 子程序1 .局部变量 n, 整数型 .计次循环首 (1000, n) 输出调试文本 (到文本 (n)) .计次循环尾 ()
但是这样还有一个问题,本来用多线程的本意是为了子程序1的循环不影响窗口的消息响应,但是加了一个等待线程又把主线程阻塞了,不符合我们的本意。
解决方法就是把等待线程放到另一个线程中去:
.版本 2 .支持库 EThread .程序集 窗口程序集1 .程序集变量 线程句柄, 整数型, , "2" .子程序 _按钮1_被单击 启动线程 (&子程序1, , 线程句柄 [1]) 启动线程 (&子程序2, , 线程句柄 [2]) 关闭线程句柄 (线程句柄 [2]) .子程序 子程序2 .如果真 (等待线程 (线程句柄 [1], )) 信息框 (“线程1结束”, 0, ) 关闭线程句柄 (线程句柄 [1]) .如果真结束 .子程序 子程序1 .局部变量 n, 整数型 .计次循环首 (1000, n) 输出调试文本 (到文本 (n)) .计次循环尾 ()
如此,在不阻塞主线程的情况下完成了等待线程。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。