TC官方合作论坛
标题:
线程停止后的句柄问题
[打印本页]
作者:
xiaoqix
时间:
2015-8-5 12:08
标题:
线程停止后的句柄问题
本帖最后由 xiaoqix 于 2015-8-5 12:33 编辑
变量 线程ID
功能 启动_热键()
//启动热键
调试输出(线程ID)
如果(线程ID == 0)
设置托盘气泡("开始运行","提示")
线程ID=线程开启("主程序","")
否则
设置托盘气泡("请不要重复按启动键","提示")
结束
调试输出("线程:"&线程ID)
结束
主程序()
调试输出("主程序"&线程ID)
线程关闭(线程ID)
线程ID = 0
结束
结束
复制代码
有个疑问
当主程序内 执行了 线程关闭后,我把线程句柄 赋值为0
但是发现,线程停止后,那句负值 因为前面的停止而不执行
然后再按启动的时候 此线程句柄 居然还存在里面,没有变化,也不是0
请问线程停止命令 运行后,怎么把句柄变成0呢
另外想问下,如果 不给他变成0
当运行了 停止线程后,这个线程还在后台存在运行吗,会不会占用资源?(这个线程停止的命令 感觉像是线程暂停?)
关于句柄赋值 我有个备选方案,就是用读写配置来确定句柄
但是 目前闹不明白,这个线程句柄直接在里面赋值为0后为什么 没有变成0?
功能 终止_热键()
调试输出(线程ID)
如果(线程ID != 0)
线程关闭(线程ID)
线程ID = 0
结束
调试输出(线程ID)
结束
复制代码
如果用热键停止的方式,按下热键后,调试输出的显示句柄为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
变量 线程ID
功能 启动_热键()
//启动热键
调试输出(线程ID)
如果(线程ID == 0)
设置托盘气泡("开始运行","提示")
线程ID=线程开启("主程序","")
否则
设置托盘气泡("请不要重复按启动键","提示")
结束
调试输出("线程:"&线程ID)
结束
功能 启动_热键2()
调试输出("主程序"&线程ID)
线程关闭(线程ID)
线程ID = 0
结束
功能 主程序()
//..............
结束
复制代码
作者:
xiaoqix
时间:
2015-8-5 12:55
言术 发表于 2015-8-5 12:41
刚才可能你回帖的时候 我刚好发帖!~
这个方法我知道,后面我做了补充
我想问下,线程停止后,不把句柄变成0,他应该不会占资源吧
因为之前都是用读写配置的方式 来确定句柄 和修改句柄0
但是感觉 我是不是 多此一举了,看有其他好的方式没
作者:
chen71512
时间:
2015-9-17 17:25
这个好办
主程序()
调试输出("主程序"&线程ID)
变量 强迫症专用 = 线程ID
线程ID = 0
线程关闭(强迫症专用)
17. 结束
复制代码
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1