TC官方合作论坛

 找回密码
 立即注册
查看: 828|回复: 4
打印 上一主题 下一主题

[已解决] 循环里运行临界区程序就卡死!

[复制链接]
跳转到指定楼层
楼主
发表于 2014-5-7 13:49:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

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

x
这个怎么解决啊

比如我 要 循环 找 两个图
功能 找图1()
循环(真)
        dm.FindPic(0,0,1024,768,"地图1.bmp","000000",0.9,0,x,y)
        如果(x>0)

线程.进入临界区(对象句柄)
超级鼠标.移动(x,y)
辅助.等待(50)
超级鼠标.左键单击(1)
线程.离开临界区(对象句柄)
如果结束
循环结束
功能结束
功能 找图2()
循环(真)
        dm.FindPic(0,0,1024,768,"地图2.bmp","000000",0.9,0,x1,y1)
        如果(x1>0)

线程.进入临界区(对象句柄)
超级鼠标.移动(x1,y1)
辅助.等待(50)
超级鼠标.左键单击(1)
线程.离开临界区(对象句柄)
如果结束

循环结束
功能结束
    对象句柄=线程.创建临界区()    //创建临界区对象
    句柄A=线程.开启("事件测试A.找图1",对象句柄)
    句柄B=线程.开启("事件测试A.找图2",对象句柄)
    线程.等待(句柄A,-1)
    线程.等待(句柄B,-1)
    线程.删除临界区(对象句柄)


我要 无限找 这两个 图 找到了 就去 依次点击
怎么问题来了 我 发现 死循环里面  运行 或则长时间 运行 进入和 离开 临界区的 功能  程序就   卡死了  有没什么方法 解决啊!


回复

使用道具 举报

5#
发表于 2014-5-7 17:38:05 | 只看该作者
你不行就用线程  事件来控制   找1 不找2   找2不找1   依次寻找
回复 支持 反对

使用道具 举报

沙发
 楼主| 发表于 2014-5-7 14:17:42 | 只看该作者
  对象句柄=线程.创建临界区()    //创建临界区对象
    句柄A=线程.开启("事件测试A.找图1",对象句柄)
    句柄B=线程.开启("事件测试A.找图2",对象句柄)

奶奶的 原来 是 下面这个几条 口令的 问题!
    线程.等待(句柄A,-1)
    线程.等待(句柄B,-1)
    线程.删除临界区(对象句柄)
去掉下面的 口令  就正常了 哎 看来  那个 帮组文档也不能 全抄啊!
回复 支持 反对

使用道具 举报

板凳
发表于 2014-5-7 16:38:01 | 只看该作者
你用法不对,你这样频繁的进入出去临界区,而且是多个线程线程抢一个临界区 有点坑啊你

一般临界区里经量写的是代码块,你就这一点点代码,而且循环每个延时,还有你就不能开一个线程么,你这个代码一个线程不用临界区,就顺序找图也可以实现啊
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2014-5-7 17:23:25 | 只看该作者
我 几千行的代码不可能都 发布上来吧!
只是 打个 比方啊!  再说 意思都一样
我 做一个游戏 的 前台3开
那么 没几秒 可能就 要 切换窗口一次  暂停其他 线程一次啊!
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

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

GMT+8, 2025-9-27 09:10 , Processed in 0.162803 second(s), 23 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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