TC官方合作论坛

 找回密码
 立即注册
查看: 3018|回复: 6

[问题] 关于多线程的关闭

[复制链接]
发表于 2012-2-18 17:09:47 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚用TC。
测试的时候用大漠绑定N个记事本,开启N个线程,输入文本测试

文本输入是可以了,不过有点问题

1.线程开启好像很慢?全部绑定完毕后等了好一会才开始输入,并且有一次测试中每个线程开启的时间间隔是比较久的。
2.线程的关闭,线程关闭在窗口销毁这一事件中是否不行???我用按钮手动关闭就可以,在窗口销毁事件中貌似就不行。。。
3.程序退出时,提示:无法删除****多线程多开:文件目录不是空的     (多线程多开是我的空间命名,****是不固定的数字,不知道是不是线程句柄。)
回复

使用道具 举报

 楼主| 发表于 2012-2-18 17:12:01 | 显示全部楼层
第3点我知道是什么原因了。是因为大漠没有解绑。。。
但是第2点还是问题,无法再销毁事件中使用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-18 17:21:07 | 显示全部楼层
贴一下源码-。-附件大,传不上。。话说,为什么生成的exe会这么大呢。。。刚使用,语法什么的乱,求指点

//=============================================================================================
#import "dm.dmsoft" dm

空间 多线程多开
//定义默认空间
//全局变量
整型 窗口数量
整型 线程_窗口句柄
整型 线程编号




功能 逻辑型 线程方法1()
//开始绑定窗口
整型 线程内_句柄
整型 绑定是否成功
        线程内_句柄=线程_窗口句柄
        //辅助.消息框(转换.整型转字符型(线程内_句柄))
        循环(真)
            绑定是否成功=dm.BindWindow(线程内_句柄,"dx","windows","windows",0)
                如果(绑定是否成功==0)
                    辅助.消息框("绑定失败!")
                    辅助.退出()
                否则
                    标签.设置文本("标签2","绑定成功!")
                    跳出
                如果结束
        循环结束
        
        循环(真)
                标签.设置文本("标签2","进入测试")
                多线程多开.输入测试(线程内_句柄)        //子线程主体部分
                辅助.等待(10)
        循环结束
        //循环结束语句
返回 真
//函数返回语句
功能结束
//功能函数用完后结束该功能


功能 逻辑型 输入测试(整型 线程内_句柄)
        整型 句柄
        字符型 临时字符
        句柄=线程内_句柄
        临时字符=字符串.连接("句柄:",转换.整型转字符型(句柄))
        临时字符=字符串.连接(临时字符,",测试成功!!")
        dm.SendString(句柄,临时字符)
        辅助.等待(50)
        dm.KeyPress(13)
        
返回 真
功能结束

功能 逻辑型 开始_点击()
//这里添加你要执行的代码
        多线程多开.注册插件()
        辅助.等待(100)
        多线程多开.获取句柄()
        辅助.等待(100)
        多线程多开.多开多线程绑定()
返回 真
//函数返回语句
功能结束

功能 逻辑型 退出_点击()
//这里添加你要执行的代码
辅助.退出()
返回 真
//函数返回语句
功能结束

功能 逻辑型 注册插件()
        逻辑型 是否成功=辅助.是否注册("dm.dmsoft")
                如果(是否成功)
                        //辅助.消息框("插件已注册")
                        标签.设置文本("标签0","注册插件成功,按HOME开始获取窗口句柄")
                否则
                        辅助.注册插件("rc:dm.dll",真)  //rc:  使用资源中的文件
                如果结束
返回 真
功能结束

功能 逻辑型 获取句柄()
        整型 键值
        整型 序号
        整型 窗口句柄
        字符型 窗口数量2
        序号=0
        窗口数量2=编辑框.获得文本("编辑框0")
        窗口数量=转换.字符型转整型(窗口数量2,0)
        循环(序号<窗口数量)
        //当序号值小于26时,进入循环
                //运行到这里暂停,等待按键响应
                键值=键盘.等待按键()
                如果(键值==36)  //HOME键
                     窗口句柄=dm.GetMousePointWindow()//获取鼠标所指向的窗口句柄
                     列表框.增加文本("列表框0",转换.整型转字符型(窗口句柄))
                     序号=序号+1
                     辅助.等待(200)
                如果结束     
        循环结束
        标签.设置文本("标签0","句柄获取结束!")
返回 真
功能结束

功能 逻辑型 多开多线程绑定()
        整型 序号
        字符型 句柄
        标签.设置文本("标签0","多线程绑定开启!")
        序号=0
        循环(序号<窗口数量)
                句柄=列表框.获得文本("列表框0",序号)
                线程_窗口句柄=转换.字符型转整型(句柄,0)
               // 辅助.消息框(转换.整型转字符型(线程_窗口句柄))
                线程编号=线程.开启("多线程多开.线程方法1")
                辅助.等待(50)
                列表框.增加文本("列表框1",转换.整型转字符型(线程编号))
                //标签.设置文本("标签0",字符串.连接("开启",句柄))
                序号=序号+1
        循环结束
返回 真
功能结束


功能 逻辑型 按钮1_点击()
//这里添加你要执行的代码
        整型 序号
        字符型 线程句柄
        序号=0
        dm.UnBindWindow()
        循环(序号<窗口数量)
                线程句柄=列表框.获得文本("列表框1",序号)
                线程.关闭(转换.字符型转整型(线程句柄,0))
                序号=序号+1
        循环结束

返回 真
功能结束


功能 逻辑型 销毁()
//这里添加你要执行的代码
        整型 序号
        字符型 线程句柄
        序号=0
        dm.UnBindWindow()
        循环(序号<窗口数量)
                线程句柄=列表框.获得文本("列表框1",序号)
                线程.关闭(转换.字符型转整型(线程句柄,0))
                序号=序号+1
        循环结束
返回 真
功能结束

空间结束
回复 支持 反对

使用道具 举报

发表于 2012-2-18 19:06:09 | 显示全部楼层
1,开启线程的速度问题,我想主要是因为你使用了大漠,线程要初始化 插件 环境,你去掉插件看看
2,线程关闭在窗口销毁这一事件中,不是不行,其实是这样的,线程关闭,线程不是马上停止,它要做销毁工作,但是如果在线程销毁前,EXE进程已经销毁了,那明显会报错,所以你要确定是线程销毁了,在执行退出操作,比如,线程.等待,或者你给点延时
3,这个引起的原因可能性有很多,主要是代码引起的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-18 19:38:21 | 显示全部楼层
哦哦,原来如此。。。
新手啊-。-

不用插件的话许多功能TC自带的貌似还有点麻烦,差距。。

还有一点就是据说TC没有数组。。。那个什么队列的,看起来好麻烦的样子。。。
回复 支持 反对

使用道具 举报

发表于 2012-2-19 00:41:20 | 显示全部楼层
新版有数组了,看帮助文档
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-19 15:48:29 | 显示全部楼层
哦。我还真没看。。。。看看去,就不用弄那么多列表框了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-19 20:00 , Processed in 0.045368 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表