TC官方合作论坛

 找回密码
 立即注册
查看: 3590|回复: 21

[已解决] 做2个子窗口都各有一个线程,同时开启。怎么才能不相互...

[复制链接]
发表于 2013-11-17 15:42:44 | 显示全部楼层 |阅读模式

马上加入TC

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

x
本帖最后由 1525299008 于 2013-11-17 16:03 编辑

每个线程都是几个按键,而且第一个线程是123,那第2个线程就是456.代码很简单,我就不贴了。我现在做的效果是要么第一个线程运行,要么是第二线程运行,不同时的效果很明显。都是同时用热键启动的。如何构建思路?现在的效果做不到按键精灵那种同时进行的效果。我简单的看了下临界区的知识,好像不对路,因为我不是同时按下一个相同的键,谈不上抢不抢的问题吧
回复

使用道具 举报

发表于 2013-11-17 16:14:22 | 显示全部楼层
思路不清楚,第一,临界区是干什么用的你要明白,比如 线程1在操作鼠标的时候,线程2也在操作鼠标 这样就不行啦,关键的地方不是线程,而是操作鼠标会不会干扰,再选择用临界区。

你需要的目的很简单,此开彼停,那么你就定义一个全局变量 线程开关=0,定义两个全局线程句柄,线程句柄1 线程句柄2

  1.     如果(线程开关==0)
  2.         线程.关闭(线程句柄2)
  3.         线程句柄1=线程.开启("","")
  4.         线程开关=1
  5.     否则        
  6.         线程.关闭(线程句柄1)
  7.         线程句柄2=线程.开启("","")
  8.         线程开关=0
  9.         
  10.     如果结束
复制代码


回复 支持 反对

使用道具 举报

发表于 2013-11-17 16:48:25 | 显示全部楼层
帮顶下。                                                                                                                                                                                                                                                                                                                                                                                                                  
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-17 17:12:53 | 显示全部楼层
kaixindexifan 发表于 2013-11-17 16:14
思路不清楚,第一,临界区是干什么用的你要明白,比如 线程1在操作鼠标的时候,线程2也在操作鼠标 这样就不 ...

我不是让2个线程,一个开,另一个关。而是2个线程同时开。有人说2个线程同时开,不互相影响。问题是在游戏,显示的效果就是要么第一个开了,第二个不动。等好一会第二才开一次。比如说,我同时按下1键和8键,他们应该做2个不同的技能,1是打怪,8是加个血。应该在游戏是可以几乎同时进行的。可实际情况代码显示不出来。
(注:第一个线程按键的次数比较多,第二个线程按键次数比较少,而且两个线程都是无限循环的)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-17 17:42:20 | 显示全部楼层
我再打个比方,一个线程是无限循环按1,一个线程是无限循环按2.我说同时启动,2个线程一起开始按。当然我明白不管是人还是机器,都不可能同时按下,肯定是有先后,只是肉眼看不出来而已。可我做的2个线程,当启动时要么是第1个线程开始循环,等好一会第2个线程才按了几下,第1个线程又开始了。我在形容一下,我要的效果是12121212.不是要按1后 等1分钟后,2才出来。开始我以为是少了延迟,加了后,效果依旧。
(注:第一个线程按键有1234567,循环。)(注:第二个线程按键是890,循环)
回复 支持 反对

使用道具 举报

发表于 2013-11-17 18:20:45 | 显示全部楼层
你是不是用的控件.模态窗口?,,如果是的话,改成 控件.打开窗口,,

回答正确,请采纳
回复 支持 反对

使用道具 举报

发表于 2013-11-17 20:38:06 | 显示全部楼层
1525299008 发表于 2013-11-17 17:12
我不是让2个线程,一个开,另一个关。而是2个线程同时开。有人说2个线程同时开,不互相影响。问题是在游 ...

开始有点明白你的意思了,不过还是不太理解你的想法,好像貌似你是要弄组合技能键,然后自带加血。但是目的相同,方法可以有很多不是?我们可以选择好的方法实现。

线程同步问题 需要临界区 或者事件  你用临界区试试

最好你说下你的具体思路和需要的要求,欢迎交流!{:soso_e141:}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-18 09:17:29 | 显示全部楼层
本帖最后由 1525299008 于 2013-11-18 09:25 编辑
kaixindexifan 发表于 2013-11-17 20:38
开始有点明白你的意思了,不过还是不太理解你的想法,好像貌似你是要弄组合技能键,然后自带加血。但是目 ...


我也不知道在TC里叫不叫组合键,应该不是那种的。打个比方说,就是在第一个线程(按下123)不停的打怪同时,第二个线程(按下890)不停的给自身加血。可实际效果是,一启动就打怪,但血不加。要么就是一开始加血,但不打怪。等过了一会,才开始一次加血或者一次打怪。好像就是非要等第一个线程完成的差不多,才开始第二线程,而且这第二线程循环的还不痛快。循环一次就不动了。代码很简单就是热键启动,2个线程,每个线程里有许多按键代码而已。如果说需要用到临界区,我到是研究了一下,问题是
第一个线程,第二个线程,代码的思路如下:
进入临界区
按键
退出临界区
进入临界区
按键
退出临界区
。。。

这个对不,因为根据游戏的需要,我不能让一个循环后,才让另一个循环进去临界区。这样不行。所以我只能让一个按键进去后,退出后,在让另一个按键进去。这个思路总感到不对路。
还有什么叫事件?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-18 09:24:02 | 显示全部楼层
dshp4050 发表于 2013-11-17 18:20
你是不是用的控件.模态窗口?,,如果是的话,改成 控件.打开窗口,,

回答正确,请采纳 ...

我没有用控件。打开i窗口。
我应该是用的控件。模拟窗口。因为我只是用前台就够了,没有用去找什么窗口句柄的知识。
我用一个线程的时候,感觉不错,很流畅。所以我就没用过找窗口句柄的代码。
我想问下这2个函数,有什么区别?难道问题真在这了?
回复 支持 反对

使用道具 举报

发表于 2013-11-18 13:02:22 | 显示全部楼层
1525299008 发表于 2013-11-18 09:17
我也不知道在TC里叫不叫组合键,应该不是那种的。打个比方说,就是在第一个线程(按下123)不停的打怪同 ...

你创建一个临界区句柄 这个变量定为全局变量 然后就按刚才说的 进入临界区句柄 按键 离开临界区句柄  两个线程可以同时开启的 肯定没问题。如果是后台按键,你可以测试下 分别给两个线程定义两个临界区句柄 然后让他们各使用各的,主要是看如果同时在按键,会不会有问题,如果有问题。就定义个临界区句柄,这样就不会感染,速度也不会很慢多少的
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

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

Powered by 海安简单软件服务部

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

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