TC官方合作论坛

标题: 为什么单独使用列表框显示线程状态需要更多延时? [打印本页]

作者: 贪吃蛇    时间: 2014-4-10 13:22
标题: 为什么单独使用列表框显示线程状态需要更多延时?
为了直观的看到程序的运行状态,把程序里原来调试输出部分改为列表框输出,结果总是出错,排查后发现用列表框作输出时读取线程状态需要更多时间。现写了如下测试代码,得到的结果是4个-1(错误),无论在列表框之前还是之后加上调试输出,最后一个输出会是0(正确),而把最后一个延时增加到500以上就能得到正确结果,为什么单独使用列表框显示线程状态需要更多延时?
空间 测试1

功能 开始_点击()
    句柄=线程.开启("测试1.abc","")
    辅助.等待(200)
    状态=线程.获取线程状态(句柄)
    //调试输出("线程已经开启,状态="&状态)
    列表框.增加文本("列表框0","线程已经开启,状态="&状态)
    //调试输出("线程已经开启,状态="&状态)
   
    线程.暂停(句柄)
    辅助.等待(200)
    状态=线程.获取线程状态(句柄)
    //调试输出("线程已经暂停,状态="&状态)
    列表框.增加文本("列表框0","线程已经暂停,状态="&状态)
    //调试输出("线程已经暂停,状态="&状态)
   
    线程.恢复(句柄)
    辅助.等待(200)
    状态=线程.获取线程状态(句柄)
    //调试输出("线程已经恢复,状态="&状态)
    列表框.增加文本("列表框0","线程已经恢复,状态="&状态)
    //调试输出("线程已经恢复,状态="&状态)
   
    线程.关闭(句柄)
    辅助.等待(400)
    状态=线程.获取线程状态(句柄)
    //调试输出("线程已经关闭,状态="&状态)
    列表框.增加文本("列表框0","线程已经关闭,状态="&状态)
    //调试输出("线程已经关闭,状态="&状态)
功能结束
function abc()
    调试输出("abc已执行")
    while(true)
        辅助.等待(1000)
    endwhile
endfunction

功能 退出_点击()   
    辅助.退出()
功能结束
空间结束



作者: Abin    时间: 2014-4-10 15:48
线程.获取线程状态

这个命令只能检测到线程是否存在,-1(真)表示存在,0(假)表示不存在,或者已经结束。

至于你的测试,不知道你要什么效果。
作者: 贪吃蛇    时间: 2014-4-11 15:24
Abin 发表于 2014-4-10 15:48
线程.获取线程状态

这个命令只能检测到线程是否存在,-1(真)表示存在,0(假)表示不存在,或者已经结束 ...

我用 线程.获取线程状态 来检测线程是否在运行,执行这条指令所需要的时间好像受到输出方式的影响。
示例中得到的是错误结果,如果将各 列表框.增加文本 前面或后面的 调试输出 的注释符合去掉就能得到正确的结果。得到的结论是:单独使用列表框显示线程状态需要更多延时。为什么会这样?




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