很多刚学编程的新手,很容易混淆线程ID跟线程的句柄的概念。
在TC 7.0中,默认新建的一个工程文件,就是一个简单的热键调用,打开一个线程来执行函数的例子。看下TC里面对打开线程的例子:
看他对这个函数的描述:
调用成功,返回的是线程的ID,那么,他到底是不是线程ID呢?我们写个简单的代码测试下。
变量 线程ID = 0
功能 测试线程()
变量 at=当前时间()
//消息框(时间秒(at))
// 调试输出(时间秒(at))
调试输出("线程开启后返回的值:"&线程ID)
调试输出("使用获取ID获取到的ID本线程ID值:"&线程获取id() )
sleep(1000)
结束
功能 按钮0_点击()
线程ID=线程开启("执行","")
结束
我们来看下程序运行后的输出信息:
可以看到呢,其实,2个值他是不一样的,所以,TC 7 的说明文档里面,本身是混淆了这2者的概念来的。
如果你点了多次运行,比如你用一个按钮事件来执行这个打开线程,那么,你点一次,他就会新开一个线程,下面是点击了2次开始的结果,可以看到开了2个线程。
所以,在写程序,开始按钮,如果是用打开线程的方式来执行主函数,如果怕用户多次点击导致函数重复运行,建议在程序开始的时候将线程的句柄设置为0,第一次运行后对他赋值,第2次点击的话,检测到线程句柄已经不是0了,则拒绝再次执行。