TC官方合作论坛

标题: 求教 线程 死循环的问题 [打印本页]

作者: zhaojiaqing11    时间: 2014-2-13 01:44
标题: 求教 线程 死循环的问题

功能 按钮0_点击()
    //这里添加你要执行的代码
    循环(真)
        变量 x,y
        是否找到=图像.区域找色(388,732,885,764,#CA964B,0,x,y)
        如果(x > 0)
            鼠标.移动(x,y)
            鼠标.左键单击(1)

            辅助.命令("D:\\1.mp3",false)


        如果结束
    循环结束
功能结束

空间结束

请问我怎么弄多线程,以至于不在循环中卡死,最好检测到的时候能暂停!求教各位大神!万分感谢!


作者: cylhb    时间: 2014-2-13 02:13
自己写一个函数。然后把循环部分代码放函数里去。再用线程执行该函数 。比如
功能 死循环体()
    循环(真)
           。。。
           。。。
    循环结束
功能结束

然后 在按钮事件里写。线程.开启("空间名.死循环体",参数)
最好把线程句柄保存起来,方便控制
线程句柄=线程.开启("空间名.死循环体",参数)

具体函数的用法参考下帮助手册吧。
作者: 地狱骑士    时间: 2014-2-16 13:46
功能 按钮0_点击()
    //这里添加你要执行的代码
    循环(真)
        变量 x,y
        是否找到=图像.区域找色(388,732,885,764,#CA964B,0,x,y)
        如果(x > 0)
            鼠标.移动(x,y)
            鼠标.左键单击(1)
            辅助.命令("D:\\1.mp3",false)
        如果结束
    循环结束

功能结束//
//
//
当你点击了 按钮0
TC就会执行 按钮0点击事件里面的内容,一直到执行完为止。当你在按钮的点击事件里面加入了循环,那他就永远执行不完这个按钮事件了,也就是为什么会出现卡死的原因。
解决的办法就是吧你要执行的内容单独写一个功能,并用线程启动的方式来启动这个功能。别忘了TC的一大优点就是线程。

具体方法
功能 按钮0_点击()
        线程.开启("空间名称.功能名称","这里可以为空也可以写传参")
功能结束

功能 功能名称()
    循环(真)
        变量 x,y
        是否找到=图像.区域找色(388,732,885,764,#CA964B,0,x,y)
        如果(x > 0)
            鼠标.移动(x,y)
            鼠标.左键单击(1)
            辅助.命令("D:\\1.mp3",false)
        如果结束
    循环结束

功能结束


作者: bazzi    时间: 2014-2-21 01:24
可以加sleep
作者: bazzi    时间: 2014-2-21 01:26
线程的优点本来就是窗口不卡死,




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1