TC官方合作论坛

 找回密码
 立即注册
查看: 2165|回复: 8

请高手解答一下:关于线程.暂停和线程.开启的问题,谢谢!

[复制链接]
发表于 2013-9-24 15:28:18 | 显示全部楼层 |阅读模式

马上加入TC

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

x
各高手大神们,请帮下小弟:  在编个脚本时,里面用到了一个死循环,类似如下代码


倒.其实简化代码如下
线程句柄1=线程.开启XXX1
辅助.等待(20000)
线程.暂停(线程句柄1)
线程句柄2=线程.开启XXX2
循环(真)
线程.暂停(线程句柄2)
线程.恢复(线程句柄1)
辅助.等待(20000)
线程.暂停(线程句柄1)
线程.恢复(线程句柄2)
辅助.等待(20000)
循环结束
大约意思就是这样了



功能 切换()
辅助.等待(1000)
    线程句柄11=线程.开启("召唤脚本.小号主线任务","")
    调试输出(线程句柄11)
    辅助.等待(30000)
    //线程.等待(线程句柄11,-1)
    //辅助.等待(1000)
    如果(dm.FindPic(0,0,2000,2000,"切换.bmp","000000",0.6,0,wx,wy)>=0)
        线程.暂停(线程句柄11)
        辅助.等待(1000)
        辅助.等待(500)
        超级鼠标.移动(wx+10,wy+10)
        辅助.等待(500)
        超级鼠标.左键单击(1)
        辅助.等待(500)
        超级鼠标.移动(wx,wy-260)
        辅助.等待(3500)
    如果结束           
    辅助.等待(1500)
    线程句柄22=线程.开启("召唤脚本.小号主线任务1","")
    调试输出(线程句柄22)
    辅助.等待(30000)
    循环(真)
        超级键盘.弹起(17)
        辅助.等待(30000)
        如果(dm.FindPic(0,0,2000,2000,"切换.bmp","000000",0.6,0,wx1,wy1)>=0)
            辅助.等待(1000)
            线程.暂停(线程句柄22)
            调试输出("暂停22")
            辅助.等待(1500)
            超级鼠标.移动(wx1+10,wy1+10)
            辅助.等待(500)
            超级鼠标.左键单击(1)
            辅助.等待(500)
            超级鼠标.移动(wx1,wy1-260)
            辅助.等待(3500)
        如果结束
        辅助.等待(3000)
        线程.设置事件(句柄)
标记11:
        是否成功11=线程.恢复(线程句柄11)
        如果(是否成功11)
        否则
            调试输出("跳标记11")
            goto 标记11
        如果结束
        辅助.等待(30000)
        如果(dm.FindPic(0,0,2000,2000,"切换.bmp","000000",0.6,0,wx2,wy2)>=0)
            线程.暂停(线程句柄11)
            调试输出("暂停11")
            进程.释放内存(线程句柄11)
            辅助.等待(1500)
            辅助.等待(1500)
            超级鼠标.移动(wx2+10,wy2+10)
            辅助.等待(500)
            超级鼠标.左键单击(1)
            辅助.等待(500)
            超级鼠标.移动(wx2,wy2-260)
            辅助.等待(3500)
        否则
            调试输出("标记Y")
        如果结束
        辅助.等待(1500)
标记22:
        是否成功22=线程.恢复(线程句柄22)
        如果(是否成功22)
        否则
            调试输出("跳标记22")  
            goto 标记22
        如果结束
        调试输出("恢复22")
        辅助.等待(30000)
        调试输出("循环尾")
    循环结束

功能结束
但是发觉脚本运行一段时间后(时间不确),恢复线程恢复不了,在拼命的goto,如下
输出>>"跳标记11"          行号:106 文件:c:\users\wangxc\desktop\tc_99征途2召唤脚本\tc_99征途2召唤脚本\tc_99征途2召唤脚本.t
请高手指点下,是那里的问题,谢谢!!
回复

使用道具 举报

发表于 2013-9-24 16:19:09 | 显示全部楼层
看了半天愣是木看懂,
跟汇编代码一样.短短几行代码N多的跳转
你先把要实现的目标细化成一个个独立的功能函数,那时候估计你自己就发现自己的问题了.
回复 支持 反对

使用道具 举报

发表于 2013-9-24 16:40:34 | 显示全部楼层
标记11:
        是否成功11=线程.恢复(线程句柄11)
        如果(是否成功11)
        否则
            调试输出("跳标记11")
            goto 标记11
        如果结束

再看一遍.....

建议这样找问题:
调试输出("跳标记11"&是否成功11)
回复 支持 反对

使用道具 举报

发表于 2013-9-24 16:52:12 | 显示全部楼层
恢复不成功有可能是你线程根本就没暂停,所以就恢复不了。。 那就会一直处在下面的goto循环里,那么就会出现你的问题了。你再看看你的代码吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-24 17:32:03 | 显示全部楼层
倒.其实简化代码如下
线程句柄1=线程.开启XXX1
辅助.等待(20000)
线程.暂停(线程句柄1)
线程句柄2=线程.开启XXX2
循环(真)
线程.暂停(线程句柄2)
线程.恢复(线程句柄1)
辅助.等待(20000)
线程.暂停(线程句柄1)
线程.恢复(线程句柄2)
辅助.等待(20000)
循环结束
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-24 17:37:29 | 显示全部楼层
回复 4楼Abin的帖子

线程是暂停了,同时这个goto有时是线程句柄1恢复不了,有时是结程句柄2恢复不了.很奇怪.
同时我还想问个问题,如果一个线程暂停了两次,是不是不能恢复了?还是要恢复两次才能运行?
回复 支持 反对

使用道具 举报

发表于 2013-9-25 00:56:16 | 显示全部楼层
跳转语句最好还是少用的好 太多了 会很乱的 像if  while for 之类的很好用的也 而且容易看明白
回复 支持 反对

使用道具 举报

发表于 2013-9-25 10:39:41 | 显示全部楼层
暂停了几次就要恢复几次!至于其他的,我看你的逻辑比较乱。你自己再处理下吧!
回复 支持 反对

使用道具 举报

发表于 2013-10-30 17:06:31 | 显示全部楼层
你是不是想实现前台多开啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-9-29 09:50 , Processed in 0.049255 second(s), 22 queries .

Powered by 海安简单软件服务部

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

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