TC官方合作论坛

 找回密码
 立即注册
查看: 930|回复: 2

[已解决] 求教下~~~,写了一个程序,里面开了3个线程,这样的写法对不对,然后程序运行时间一长就会有的时候不好用了

[复制链接]
发表于 2013-8-22 21:46:16 | 显示全部楼层 |阅读模式

马上加入TC

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

x
求教下~~~,写了一个程序,里面开了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,又重新开了个游戏。 这个怎么弄呢~~~ 而且程序最开始运行的时候是好用的啊~~~求教下 ~~~ 谢谢 ~~·

回复

使用道具 举报

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

还有不必要打开任务管理器 结束进程 有函数可以直接干掉进程 比那个简单的多
记得大漠也有函数 直接干掉
回复 支持 反对

使用道具 举报

发表于 2013-8-23 06:08:52 | 显示全部楼层
- -!最好的办法就是用计时器  周期调用辅助EXE文件 将此进程关闭 达到初始化的目的 释放所有资源 然后再打开
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-9-24 05:51 , Processed in 0.036783 second(s), 23 queries .

Powered by 海安简单软件服务部

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

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