TC官方合作论坛

标题: TC有线程结束事件吗? [打印本页]

作者: 似此星辰非昨夜    时间: 2016-4-22 22:41
标题: TC有线程结束事件吗?
如题,想在线程结束的时候自动触发一些命令,比如释放大漠对象、解绑窗口等。如果没有的话,大家都是怎么解决的?

作者: 来不及的来得及    时间: 2016-4-22 22:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: cjxdn    时间: 2016-4-22 23:02
在功能最后面加不就行了吗
作者: 似此星辰非昨夜    时间: 2016-4-22 23:03
来不及的来得及 发表于 2016-4-22 22:54
线程最后面不就是么

不懂具体什么意思 你的意思是写在线程的最后? 那如果是被其他线程中途终止了呢? 根本不执行到最后啊
作者: cjxdn    时间: 2016-4-22 23:08
变量 线程ID


功能 按钮_点击()
    线程ID=线程开启("执行","")
结束

功能 执行()
    //开始执行命令
    //....
    //....
    //所有命令执行完毕
   
    //进行  释放大漠对象、解绑窗口等
结束
作者: 似此星辰非昨夜    时间: 2016-4-22 23:09
cjxdn 发表于 2016-4-22 23:08
变量 线程ID

不行的 如果这个线程是被其他线程结束的呢?意外终止是不会执行到最后的
作者: cjxdn    时间: 2016-4-22 23:30
变量 句柄=线程开启("threadfunction","")
变量 status=线程获取状态(句柄)


线程不是开启状态就进行  释放大漠对象、解绑窗口等
作者: 似此星辰非昨夜    时间: 2016-4-22 23:31
cjxdn 发表于 2016-4-22 23:30
变量 句柄=线程开启("threadfunction","")
变量 status=线程获取状态(句柄)

变量 status=线程获取状态(句柄) 这行代码应该放在哪里循环?
作者: cjxdn    时间: 2016-4-22 23:42
似此星辰非昨夜 发表于 2016-4-22 23:31
变量 status=线程获取状态(句柄) 这行代码应该放在哪里循环?

拖个定时器控件在界面上

放定时器的功能里循环
作者: 言术    时间: 2016-4-23 06:59
我来说下思路:
1)如果线程可以自己结束,只需要在最后添加即可
2)如果线程是死循环或想提前结束,你需要手动打断它吧(比如按某键),在这里添加你想执行的
作者: 剑仙十号    时间: 2016-4-23 15:00
本帖最后由 剑仙十号 于 2016-4-23 16:56 编辑


10#的方法很赞。估计楼主说的是,下面这个方法。
TC 简单开发:多窗口多开单停。
没有学过对象和类的新手,认为创造出来的大漠对象,只能这样写:
  dm.UnBindWindow()
不曾知道创造的大漠对象可以这样写:
  dm0.UnBindWindow()


var 线程ID0, dm0 //定义全局变量。

dm0 = com("dm.dmsoft")//创造大漠对象。

var path = 获取资源路径("rc:")

var ret = dm0.SetPath(path) //把TC的资源路径,设为大漠的全局路径。


这里有个小技巧。创造多个对象,多窗口还可以多开单停。

var 线程ID0, 线程ID1, 线程ID2, 线程ID3
var dm0,dm1,dm2,dm3 //定义四个全局变量。

dm0 = com("dm.dmsoft")//创造大漠对象。

dm1 = com("dm.dmsoft")//创造大漠对象。

dm2 = com("dm.dmsoft")//创造大漠对象。

dm3 = com("dm.dmsoft")//创造大漠对象。

function 停止0_热键()
  线程关闭(线程ID0)
  dm0.UnBindWindow()
end

function 停止1_热键()
  线程关闭(线程ID1)
  dm1.UnBindWindow()
end




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