TC官方合作论坛

 找回密码
 立即注册
查看: 1467|回复: 5

[问题] colsethread和closehandle的区别是什么?

[复制链接]
发表于 2014-4-11 21:55:58 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
开启线程以后,是不是2个都可以关闭线程?区别是什么?
我用
        arraysp.size(handle,len)
        for(i=0;i<len;i++)
            调试输出(i)
            调试输出(handle[i])
            thread.closehandle(handle[i])
        endfor

都关闭了线程,为什么线程还会进行?
输出>>0          行号:39 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t
输出>>2252          行号:40 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t
输出>>1          行号:39 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t
输出>>2760          行号:40 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t<==========这里都关闭了线程
{输出>>""          行号:138 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t
输出>>""          行号:140 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t
输出>>""          行号:159 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t
输出>>"dm"          行号:169 文件:c:\users\administrator\desktop\xxd\xxd\xxd.t}这是线程运行时候的调试,为什么还会继续运行?

回复

使用道具 举报

发表于 2014-4-12 09:15:40 | 显示全部楼层
一个是关闭线程一个是关闭事件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-12 10:15:19 | 显示全部楼层
本帖最后由 tobydu 于 2014-4-12 10:23 编辑
kevinqq 发表于 2014-4-12 09:15
一个是关闭线程一个是关闭事件

我关闭了事件没用,要用关闭线程才行吗?
还有个问题
我全局变量定义了数组
namespace xxd
var handle=array[],hwnd,i=0

然后开启线程的时候用
    arraysp.add(handle,"")
    handle=thread.beginthread("xxd.Upgrade","")
    i=i+1

开了大概3-4个线程,线程都有循环等待的语句的,然后关闭的时候
        var len
        arraysp.size(handle,len)
        for(i=0;i<len;i++)
            thread.closethread(handle)
        endfor
        ret=ts.UnBindWindow()
为什么运行时间长了有些handle[]会变成空值的?
当结束的时候会提示内存不能为read,请问是什么原因?
回复 支持 反对

使用道具 举报

发表于 2014-4-12 12:13:10 | 显示全部楼层
closethread是关闭线程的。
closehandle是关闭一个内核对象,释放一个内存对象。如:在TC里,就只有关闭事件对象。

至于你下面说的。是你数组操作不对吧!
for(i=0;i<len;i++)
    thread.closethread(handle[i])
endfor

上面那样写才对。数组访问是要带数组下标才行的!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-14 10:19:39 | 显示全部楼层
本帖最后由 tobydu 于 2014-4-14 10:24 编辑
Abin 发表于 2014-4-12 12:13
closethread是关闭线程的。
closehandle是关闭一个内核对象,释放一个内存对象。如:在TC里,就只有关闭事 ...

是我粘贴的时候搞错了,从TC直接粘贴到论坛,哪个数据的符号会自动变成斜体。
  1. arraysp.size(handle,len)
  2.         for(i=0;i<len;i++)
  3.            调试输出("当前要结束的句柄"&handle[i])
  4.             thread.closethread(handle[i])
  5.         endfor
复制代码
运行一段时间后handle会变空值,为什么?
  1. function button0_click()
  2.     arraysp.add(handle,"")
  3.     handle[i]=thread.beginthread("xxd.Upgrade","")
  4.     调试输出("升级按钮的变量"&i)
  5.     调试输出("升级按钮的句柄"&handle[i])
  6.     i=i+1
  7. endfunction
复制代码
还有全局变量i,我都已经+1了,当我按下一个按钮的时候,有时候是0,有时候又会是1,请问为啥?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-15 11:42:54 | 显示全部楼层
Abin 发表于 2014-4-12 12:13
closethread是关闭线程的。
closehandle是关闭一个内核对象,释放一个内存对象。如:在TC里,就只有关闭事 ...

访问全局变量并赋值是不是有条件的?要设临界?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-28 17:50 , Processed in 0.056312 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表