TC官方合作论坛

标题: 求教下~~~,写了一个程序,里面开了3个线程,这样的写法对不对,然后程序运行时间一长就会有的时候不好用了 [打印本页]

作者: zywbest000    时间: 2013-8-22 21:46
标题: 求教下~~~,写了一个程序,里面开了3个线程,这样的写法对不对,然后程序运行时间一长就会有的时候不好用了
求教下~~~,写了一个程序,里面开了3个线程,这样的写法对不对,然后程序运行时间一长就会有的时候不好用了~3个线程,我是这样的开始,暂停,关闭,结束。

功能 开始_点击()
    线程句柄=线程.开启("尝试登陆.来吧","")
    检测程序1=线程.开启("尝试登陆.检测1","")
    检测程序2=线程.开启("尝试登陆.检测2","")
功能结束


功能 热键0_热键()
    线程句柄=线程.开启("尝试登陆.来吧","")
    检测程序1=线程.开启("尝试登陆.检测1","")
    检测程序2=线程.开启("尝试登陆.检测2","")
功能结束

功能 热键2_热键()
    线程.恢复(线程句柄)
    线程.恢复(检测程序1)
    线程.恢复(检测程序2)
功能结束

功能 热键1_热键()
    线程.暂停(线程句柄)
    线程.暂停(检测程序1)
    线程.暂停(检测程序2)
功能结束

功能 热键3_热键()
    线程.关闭(线程句柄)
    线程.关闭(检测程序1)
    线程.关闭(检测程序2)
功能结束


这样写有没有什么问题,因为有的时候我按设定的热键,线程没有暂停,或者关闭。 这个是第一个问题,
然后第二个问题,3个线程,第一个线程是游戏里面各种操作的程序,第二和第三个线程运行的是检测程序,就会检测游戏有没有掉线,一旦发现掉线就关闭第一个线程,然后按键呼出任务管理器,关闭掉游戏,之后再重新开启第一个线程,比如:

功能 检测1()
    循环(真)
        辅助.等待(200)

        变量 dm_ret1,intX,intY

        系统.设置路径(辅助.获取资源路径("C:\\Documents and Settings\\Administrator\\桌面\\自己建的脚本资源\\尝试登陆\\尝试登陆\\资源"))
        dm_ret1=dm.FindPic(495,338,542,372,"卡战船.bmp","000000",0.9,0,intX,intY)
        如果(dm_ret1>=0)
                线程.关闭(线程句柄)
                辅助.等待(1000)
                键盘.弹起(54)
                辅助.等待(1000)
                键盘.弹起(96)
                辅助.等待(1000)

                ////开出任务管理器
                辅助.等待(3000)
                键盘.按下(17)
                辅助.等待(1000)
                键盘.按下(16)
                辅助.等待(1000)
                键盘.按下(27)
                辅助.等待(700)
                键盘.弹起(17)
                辅助.等待(700)
                键盘.弹起(16)
                辅助.等待(700)
                键盘.弹起(27)
                辅助.等待(1000)

                ////强制结束1次
                键盘.按键(72,1)
                辅助.等待(1000)
                辅助.等待(1000)
                键盘.按键(46,1)
                辅助.等待(500)
                辅助.等待(1000)
                键盘.按键(13,1)

                ////强制结束2次
                辅助.等待(1000)
                键盘.按键(72,1)
                辅助.等待(1000)
                键盘.按键(46,1)
                辅助.等待(500)
                辅助.等待(1000)
                键盘.按键(13,1)
                辅助.等待(1000)
                键盘.按键(27,1)

                辅助.等待(3000)

                线程.开启("尝试登陆.来吧","")

            如果结束


这样运行程序一段时间,几个小时不一定,会出现程序不好用,比如说上面的程序是线程2的,线程2的程序检测到掉线,会没有响应,或者关掉了线程1,但是没有呼出任务管理器,就开始又开启线程1,又重新开了个游戏。 这个怎么弄呢~~~ 而且程序最开始运行的时候是好用的啊~~~求教下 ~~~ 谢谢 ~~·


作者: 187144831    时间: 2013-8-22 22:24
前面的关于线程的代码看了一下
具体的操作 没看
看到个关键字 检测掉线
貌似你逻辑没搞清楚
你应该把线程暂停或者关闭分开  不要一刀切
比如说 你第二个线程 是检测掉线 第三个线程检测验证
如果 第二个线程证明掉线了 那就在第二个线程里面关闭 1主线程 3线程检测验证
2线程继续运行重新登录 登录成功后 调用线程 1和3 在开启
一切又回到最初你刚运行的状态

还有不必要打开任务管理器 结束进程 有函数可以直接干掉进程 比那个简单的多
记得大漠也有函数 直接干掉
作者: sugar987009    时间: 2013-8-23 06:08
- -!最好的办法就是用计时器  周期调用辅助EXE文件 将此进程关闭 达到初始化的目的 释放所有资源 然后再打开




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