|
本帖最后由 冷寂 于 2013-8-20 21:24 编辑
前言:貌似本区经常有朋友发帖求助易语言如何多线程,于是我就写了这篇教程(这里的多线程指的多个线程同时执行一个任务)
需要多线程库2.0
1 打开易语言,新建windows窗口程序,并添加几个程序集变量- .版本 2
- .程序集 窗口程序集1
- .程序集变量 停止, 逻辑型
- .程序集变量 线程数, 整数型
复制代码 2 画UI,如下图:
并把最下方那个编辑框设置为允许多行。
3 新建子程序,名为任务(随便叫什么)
4 设置按钮事件,双击按钮1(开始),加入以下代码:- .版本 2
- .支持库 EThread
- .子程序 _按钮1_被单击
- 线程数 = 到整数(编辑框1.内容)
- .计次循环首 (线程数, )
- 启动线程 (&任务, , ) ' 启动指定线程
- .计次循环尾 () ' 启动多个指定线程
- 停止 = 假
复制代码 解释:通过多次循环(循环数为线程数)来启动某一线程,这个很好理解,并给本历程最重要的一个逻辑变量赋值为假。
5 修改任务子程序内的代码:- .版本 2
- .子程序 任务
- .判断循环首 (停止 = 假)
- 编辑框2.加入文本 (“这是” + 到文本 (线程数) + “线程” + #换行符)
- .判断循环尾 ()
复制代码 解释:判断停止变量是否 = 假,如果是,就循环执行命令,注意这里是多个线程执行,如果停止变量 = 真 ,那么就不会执行循环内的代码,仅仅只是测试一下,就自动结束了线程,所有不必担心内存占用。
6 修改按钮2单击事件(停止):- .版本 2
- .子程序 _按钮2_被单击
- 停止 = 真
复制代码 将停止变量赋值为真,这样就结束了任务线程的执行(因为必须停止 = 假才会执行循环内的任务。
7 如果要发布程序,不要忘了修改一下:- .版本 2
- .子程序 __启动窗口_创建完毕
- 按钮2.禁止 = 真
复制代码- .版本 2
- .子程序 _按钮2_被单击
- 停止 = 真 ' 结束多线程
- 按钮2.禁止 = 真
- 按钮1.禁止 = 假
复制代码- .版本 2
- .支持库 EThread
- .子程序 _按钮1_被单击
- .计次循环首 (线程数, )
- 启动线程 (&任务, , ) ' 启动指定线程
- .计次循环尾 () ' 启动多个指定线程
- 停止 = 假
- 按钮1.禁止 = 真 ' 防止卡B
- 按钮2.禁止 = 假 ' 同上
复制代码 可以运行比较一下效果。
到此,本例程就结束了,下期将讲解如何优化多线程稳定性(本例程十分卡B,只能满足一般需求)以及运用多线程库1.1版来重构多线程。
源码下载:
有何疑问或BUG可回复本贴提出
撒花,再见!
|
-
|