TC官方合作论坛

标题: (收集)为什么按两下启动热键,停止键就会无效。脚本会停不下来。 [打印本页]

作者: 剑仙十号    时间: 2016-8-13 19:49
标题: (收集)为什么按两下启动热键,停止键就会无效。脚本会停不下来。


(收集)为什么按两下启动热键,停止键就会无效。脚本会停不下来。


沙发 言术

关闭线程需要句柄。
按两次热键会启动两个线程,得到两个句柄。
而保存线程句柄的变量只有一个,所以后一句柄会覆盖前一句柄。
前面的线程句柄被覆盖,消失了,这样就没法去关闭。



我一般这样写。稳稳当当的。
var 线程ID, 循环开关
功能 执行()
  循环开关 = 1
  while(循环开关)
    调试输出("111111")
    sleep(100)
  end
结束

功能 启动_热键()
  if(线程ID == "")
  线程ID = 线程开启("执行", "")
  end
结束
功能 终止_热键()
  循环开关 = 0
  线程关闭(线程ID)
  线程ID = ""
结束
功能 ****_初始化()
  线程ID = ""
结束


作者: wang220211    时间: 2016-8-14 22:51
学习了,不过这个循环开关有什么作用啊?
作者: 剑仙十号    时间: 2016-8-14 23:16
wang220211 发表于 2016-8-14 22:51
学习了,不过这个循环开关有什么作用啊?

我学习C语言一直这样写的。
循环开关  做成全局变量,用处很大。
这是脚本的框架,开了几十个线程,脚本从未报错过。
作者: tan0360    时间: 2016-8-15 23:00
循环开关 你可以这样想  你关闭了几个线程 以为 把程序都关闭了没想有个死循环在那循环着 关闭不了 ,通过一个全局 的总开关  ,开关 = 1  ,的时候循环  ,!= 1 跳出,通过条件循环, 他也就不循环了  。所以程序 通过了  然后关闭。
作者: 剑仙十号    时间: 2016-8-19 20:51
本帖最后由 剑仙十号 于 2016-9-8 16:24 编辑

循环无法停止的问题。
楼主 gang19840815 发消息


按停止热键,线程关闭了 ,但循环不能终止,跳不出来。

功能 战士双烈火()
循环(
)
等待
(1000)
结束

结束


脚本改成这样:

var 循环开关 //定义全局变量。
功能 执行()
循环开关
= 1
循环(循环开关
)
  //1234.
结束

结束


脚本时停止,先设置
循环开关 = 0
线程关闭(线程ID)



作者: 剑仙十号    时间: 2016-8-19 20:54
本帖最后由 剑仙十号 于 2016-9-8 16:22 编辑

脚本无法停止的问题。为什么停止键会无效??


带头㊣奋斗中: 17:48:34
等待(50000) 这个等待的时间,能不能写成秒或者分钟

等待(50*1000) 这样就是50秒了吗?


这是错误的写法。
这样写脚本,按停止键脚本有时停止,有时不会停。情况不稳定。


你要这样写:
for(var i=0; i<50; i++)
sleep(1000)
end







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