关于一 个易语言多线程的问题?

关于一 个易语言多线程的问题?,第1张

版本 2

支持库 iext

支持库 EThread

支持库 spec子程序 __启动窗口_创建完毕

局部变量 记录次数, 整数型

局部变量 索引, 整数型计次循环首 (6, 记录次数)

索引 = 超级列表框1插入表项 (, , , , , )

超级列表框1置标题 (索引, 0, 到文本 (记录次数 - 1))计次循环尾 ()子程序 _按钮1_被单击

局部变量 次数, 整数型计次循环首 (3, 次数)

启动线程 (&子程序1, 次数, )

计次循环尾 ()子程序 子程序1

参数 次数, 整数型

局部变量 记录次数, 整数型计次循环首 (100, 记录次数)

超级列表框1置标题 (次数, 1, 到文本 (记录次数) + “%”)

延迟 (1000)

计次循环尾 ()

给你一个例程希望你可以看明白。注意的几个地方,首先需要注意 启动线程 命令有一个 参数数据,这个是给子程序传输参数的,这个比较灵活,可以作为子程序线程的编号等,如果用到这个参数,子程序需要拟定一个参数接受数据。

版本 2

支持库 EThread

子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码

局部变量 线程数量, 整数型

线程数量 = 10 ' 启动10个线程

计次循环首 (线程数量, )

启动线程 (&线程执行子程序, , )

计次循环尾 ()

返回 (0) ' 可以根据您的需要返回任意数值

子程序 线程执行子程序

' 程序执行代码

我们知道,MS-DOS或者是纯DOS下的命令,都是单线程的。 尤其在MS-DOS中,我们经常把多条命令,放到一个BAT批处理文件中,这样,可以省去我们输入命令的麻烦。 然而,较为致命的一个弱点是,MS-DOS是单线程的。 一、MS-DOS单线程的缺点 缺点一:按顺序运行命令 按顺序运行命令,并且同一时间只能运行一个命令; 缺点二:命令执行需等待 第一个命令执行完毕,无论是成功或者失败;才会轮到第二个命令的执行;以这样的方式来运行,势必会浪费很多时间,尤其是某个命令执行不成功的时候,会等待很长一段时间,让后面的命令无法运行。如果有多个命令执行失败,那么,该BAT的总体运行时间,会比原来消耗至多倍时间。 二、MS-DOS多线程的实现 本例所说的“多线程”,并非真正意义上的多线程;而是一种伪多线程。但是,这种伪多线程,所起到的作用和真的多线程,效果完全一致。 实现原理: 让多个命令分别通过多个MS-DOS窗口来单独运行。这样,每个命令的执行时间和执行结果,都不会受到其它命令的影响。 三、伪多线程的实例 下面,以机房管理为实例,给大家详细介绍伪多线程的实现方法。 假如,一间机房有60台计算机,现在,我们通过其中的一台计算机,将某个文件夹下的所有文件,分别发送到另外的59台计算机。 以下是最基本的命令: net use \\19216802\C$ "密码" /user:"用户名" >nul

Xcopy D:\MySendFiles\ \\19216802\C$ /s /e /y

net use \\19216802\C$ /delete >nul

exit 以上代码,是针对一台计算机所使用的批处理命令。 如果要向59台发送文件,得使用for循环,如下代码: @echo off

for /L %%A in (2,1,60) do net use \\1921680%%A\c$ "密码" /user:"administrator" >nul

for /L %%B in (2,1,60) do Xcopy D:\MySendFiles\ \\1921680%%B\c$ /s /e /y

for /L %%C in (2,1,60) do net use \\1921680%%C\c$ /delete >nul

exit 可以说,如上代码已经比较完美了,但是,仍然存在问题。 如果这59台计算机当中,有10台左右网络不正常,那么,如上循环的代码中,就有10次代码运行的等待,会浪费很多时间。 如果想让上述代码在执行时间上更效益,那么,我们可以走这样一条路,即让分别发送文件至59台计算机的命令,单独通过MS-DOS窗口来运行,这样,在分别向每台计算机发送文件的时候,相互之间不会受到影响。 综上所述,我们要做的伪多线程批处理,应该是这样的: 首先,我们建立两个批处理文件,一个名为1bat,另外一个文件为2bat; 1bat文件代码如下: for /l %%i in (2,1,60) do start 2bat 1921680%%i 2bat文件代码如下: @echo off

net use \\%1\C$ "密码" /user:"用户名" >nul

Xcopy D:\MySendFiles\ \\%1\C$ /s /e /y

exit 在使用的时候,直接双击1bat文件,一切就OK了。 注意,1bat中的代码:for /l %%i in (1,1,6) do start 2bat 1921680%%i,其中的start 2bat 正是调用2bat文件的精髓。而后面的1921680%%i则是传递的参数。 很多地方曾讲到,在一个批处理文件中调用另外一个批处理文件,使用 call 命令;然,该命令不会出现另外一个MS-DOS窗口;只有start 命令,才会出现另外的MS-DOS窗口,该start命令就是实现伪多线程的关键。 当然,上述的代码,所使用到的命令比较多,如果您不熟悉的话,请在本站参阅其它技术文章,以解阁下之迷惑。

我觉得在线程中用信息狂 这东西就不好

你的问题应该是在线程中用信息狂后 信息框没有北及时关闭

然后指令执行到那里后就停住了

其实你可以自己写一个窗口当信息框

做一个自定义数组把你 保密服务器收到错误信息之后需要弹出一个信息 做成一个列表

然后自己写一个子程序当线程启动它 循环执行监视那个列表是否有数据有的话就弹出

界面代码和 工作代码隔开了 这样不就好了程序还稳定

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 关于一 个易语言多线程的问题?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情