TC官方合作论坛

 找回密码
 立即注册
查看: 1951|回复: 2

[已解决] TC线程中调用了死循环,另外还有定时器,会卡死!怎么解...

[复制链接]
发表于 2018-1-20 12:49:39 | 显示全部楼层 |阅读模式

马上加入TC

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

x
做的后台脚本,加入了死循环扫描怪物,另外还有定时器半小时一循环的,程序在运行中无法暂停和终止,要等运行完脚本才能终止,是什么原因啊?
程序第一次运行的时候是没问题各项功能都能正常使用,定时启动后一暂停程序就卡死掉了!

功能 定时注册()
    字库设置("rc:灵蛇昆仑字库.txt",0)
    定时器注册("定时器0",1800000)

结束

//从这里开始执行
功能 执行()
    //从这里开始你的代码
    调试输出("定时启动现在开启!@")

    窗口发送按键(窗口句柄,48)
    等待(3000,假)
    窗口鼠标右键按下(窗口句柄,718,307)
    窗口鼠标右键弹起(窗口句柄,718,607)

    坐标=线程开启("灵蛇1","")
    循环体=线程开启("循环找怪","犀金")
    线程等待(循环体,-1)
    回盟=线程开启("回盟技能","")
    等待(7000,假)
    线程关闭(回盟)            


    坐标=线程开启("灵蛇2","")
    循环体=线程开启("循环找怪","丽金")
    线程等待(循环体,-1)
    回盟=线程开启("回盟技能","")
    等待(7000,假)
    线程关闭(回盟)            


    坐标=线程开启("灵蛇3","")
    循环体=线程开启("循环找怪","火灵使")
    线程等待(循环体,-1)


    等待(3000,假)
    坐标=线程开启("灵蛇4","")
    循环体4=线程开启("循环找怪4","祭司")
    线程等待(循环体4,-1)
    回盟=线程开启("回盟技能","")
    等待(7000,假)

    调试输出("---------灵蛇程序运行完毕!-----------")
    窗口发送按键(窗口句柄,48)
    等待(3000,假)

    窗口鼠标右键按下(窗口句柄,718,307)
    窗口鼠标右键按下(窗口句柄,718,307)
    等待(1000)
    窗口鼠标右键弹起(窗口句柄,718,607)
    窗口鼠标右键弹起(窗口句柄,718,607)
    坐标=线程开启("昆仑1","")
    等待(90000,假)
    循环体昆仑=线程开启("循环找怪1","青须")
    线程等待(循环体昆仑,-1)


    窗口发送按键(窗口句柄,53)//连锁闪电打怪
    等待(1000,假)
    坐标=线程开启("昆仑2","")
    循环体昆仑=线程开启("循环找怪1","残剑")
    线程等待(循环体昆仑,-1)


    窗口发送按键(窗口句柄,53)//连锁闪电打怪
    等待(1000,假)
    坐标=线程开启("昆仑3","")
    循环体昆仑=线程开启("循环找怪1","裂爪")
    线程等待(循环体昆仑,-1)


    窗口发送按键(窗口句柄,53)//连锁闪电打怪
    等待(3000,假)
    坐标=线程开启("昆仑4","")
    循环体昆仑=线程开启("循环找怪1","刃皇")
    线程等待(循环体昆仑,-1)
    回盟=线程开启("回盟技能","")
    等待(7000,假)
    线程关闭(回盟)            

    吞器灵1=线程开启("吞器灵","")
    线程等待(吞器灵1,-1)
    线程关闭(吞器灵1)
    调试输出("---------昆仑程序运行完毕!-----------")
    坐标=null
    遍历ID=null
    循环体昆仑=null
    吞器灵1=null
    循环体4=null
    循环体=null
    回盟=null
    调试输出("坐标="&坐标)
    调试输出("遍历ID="&遍历ID)
    调试输出("循环体="&循环体)
    调试输出("循环体昆仑="&循环体昆仑)
    调试输出("循环体4="&循环体4)
    调试输出("窗口句柄="&窗口句柄)
结束

//启动_热键操作
功能 启动_热键()
    注册ID=线程开启("定时注册","")
    线程ID=线程开启("执行","")

结束

//终止热键操作,要想终止程序运行,必须把正在运行的所有全局变量所针对的线程都关闭
功能 终止_热键()

    调试输出("程序关闭,定时器销毁!~")

    线程关闭(回盟)
    线程关闭(吞器灵1)
    线程关闭(线程ID)
    线程关闭(循环体)
    线程关闭(循环体4)
    线程关闭(循环体昆仑)
    线程关闭(坐标)
    线程关闭(遍历ID)
    线程关闭(注册ID)
    定时器销毁("定时器0")
    窗口句柄=null
    注册ID=null  
    回盟=null
    吞器灵1=null
    线程ID=null
    循环体=null
    循环体4=null
    循环体昆仑=null
    坐标=null
    退出()
结束

回复

使用道具 举报

发表于 2018-1-21 20:30:58 | 显示全部楼层

TC就是牛,让一个啥也不懂的菜鸟可以开个10多个线程

既然来就帮你找点问题:
1,  等待(3000,假),子线程中大可不必用,性能下来10倍。 建议子线程用 等待(3000),速度 要提升10倍以上。
2,10几条线程你管得了吗?你想过线程之间的同步问题吗?建议减少线程,自己先构思线程之间数据关系。注意SLEEP会转换控制权的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 05:00:30 | 显示全部楼层
topses 发表于 2018-1-21 20:30
TC就是牛,让一个啥也不懂的菜鸟可以开个10多个线程

既然来就帮你找点问题:

我也想减少线程啊,关键是让人物跑动的过程中还要扫描怪物,有时候地图跑完都没找到怪,有时候半路上找到了,找到怪之后还要马上关闭坐标,不然,人物接着点地图,接着跑怪都不打了!线程之间的数据关系我也理过!没有冲突!执行过程是和构思一样!就是第一遍运行完成,定时启动线程的时候,中间就不能暂停了!
另外别小看新人啊!我是没你们老司机懂的多,所以我就用笨方法,多开线程,只要程序走的起来不就O了!~
最后谢谢你的回答大神!~
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-5-19 05:06 , Processed in 0.043642 second(s), 23 queries .

Powered by 海安简单软件服务部

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

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