TC官方合作论坛

标题: 线程停止后的句柄问题 [打印本页]

作者: xiaoqix    时间: 2015-8-5 12:08
标题: 线程停止后的句柄问题
本帖最后由 xiaoqix 于 2015-8-5 12:33 编辑
  1. 变量 线程ID
  2. 功能 启动_热键()
  3.     //启动热键
  4.     调试输出(线程ID)
  5.     如果(线程ID == 0)
  6.         设置托盘气泡("开始运行","提示")
  7.         线程ID=线程开启("主程序","")
  8.     否则
  9.         设置托盘气泡("请不要重复按启动键","提示")
  10.     结束
  11.     调试输出("线程:"&线程ID)
  12. 结束
  13. 主程序()
  14.         调试输出("主程序"&线程ID)
  15.         线程关闭(线程ID)
  16.         线程ID = 0  
  17.     结束
  18. 结束
复制代码
有个疑问
当主程序内 执行了 线程关闭后,我把线程句柄 赋值为0
但是发现,线程停止后,那句负值 因为前面的停止而不执行
然后再按启动的时候 此线程句柄 居然还存在里面,没有变化,也不是0
请问线程停止命令 运行后,怎么把句柄变成0呢
另外想问下,如果 不给他变成0
当运行了 停止线程后,这个线程还在后台存在运行吗,会不会占用资源?(这个线程停止的命令  感觉像是线程暂停?)

关于句柄赋值 我有个备选方案,就是用读写配置来确定句柄
但是 目前闹不明白,这个线程句柄直接在里面赋值为0后为什么 没有变成0?

  1. 功能 终止_热键()
  2.     调试输出(线程ID)
  3.     如果(线程ID != 0)
  4.         线程关闭(线程ID)
  5.         线程ID = 0        
  6.     结束   
  7.     调试输出(线程ID)
  8. 结束
复制代码


如果用热键停止的方式,按下热键后,调试输出的显示句柄为0
我如果直接在程序内 调用  功能 终止_热键() 而不是去手动按下热键
线程会停止,但是线程句柄不会变成0


作者: 言术    时间: 2015-8-5 12:33
逻辑的问题,自己把自己结束了,当然就不往下执行了,所以没法赋值,你需要用另一个来结束这一个就不会受影响了
作者: 这论坛不错    时间: 2015-8-5 12:33
你都把自己给关了,就不会运行到后面那句线程ID=0那里了,也就是说后面那句你是白写的了,不会生效的
作者: 这论坛不错    时间: 2015-8-5 12:34
你可以另外设置个热键,关闭线程并且修改线程ID的变量名
作者: xiaoqix    时间: 2015-8-5 12:37
言术 发表于 2015-8-5 12:33
逻辑的问题,自己把自己结束了,当然就不往下执行了,所以没法赋值,你需要用另一个来结束这一个就不会受影 ...

我补充了一下
把停止线程 放到热键里面,就能执行

可以理解为这个热键是单独的程序吗

我想问下,如果这个逻辑是对的
我在主线程里开启一个新线程,使用新线程来关闭此前的这个主线程,会不会 两个线程同时关闭掉呢

另外这个线程 关闭后,那个句柄 还在,会不会影响程序,会不会占用资源呢
作者: 言术    时间: 2015-8-5 12:41
  1. 变量 线程ID

  2. 功能 启动_热键()
  3.     //启动热键
  4.     调试输出(线程ID)
  5.     如果(线程ID == 0)
  6.         设置托盘气泡("开始运行","提示")
  7.         线程ID=线程开启("主程序","")
  8.     否则
  9.         设置托盘气泡("请不要重复按启动键","提示")
  10.     结束
  11.     调试输出("线程:"&线程ID)
  12. 结束

  13. 功能 启动_热键2()
  14.     调试输出("主程序"&线程ID)
  15.     线程关闭(线程ID)
  16.     线程ID = 0  
  17. 结束

  18. 功能 主程序()
  19.     //..............
  20. 结束
复制代码

作者: xiaoqix    时间: 2015-8-5 12:55
言术 发表于 2015-8-5 12:41

刚才可能你回帖的时候 我刚好发帖!~
这个方法我知道,后面我做了补充
我想问下,线程停止后,不把句柄变成0,他应该不会占资源吧
因为之前都是用读写配置的方式 来确定句柄 和修改句柄0
但是感觉 我是不是 多此一举了,看有其他好的方式没
作者: chen71512    时间: 2015-9-17 17:25
这个好办
  1. 主程序()

  2. 调试输出("主程序"&线程ID)
  3. 变量 强迫症专用 = 线程ID
  4.         线程ID = 0  
  5.       线程关闭(强迫症专用)
  6. 17.    结束
复制代码






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