按键精灵 大漠多线程 重复调用子程序 问题

按键的多线程(就2个线程)一个执行命令,一个检测。但是我主程序(检测)到条件达成要停止另一个子程序然后重新启动这个子程序。那么就会出现这个子程序被多次启动(也就是说只要检... 按键的多线程(就2个线程)一个执行命令,一个检测。但是我主程序(检测)到条件达成要停止另一个子程序然后重新启动这个子程序。那么就会出现这个子程序被多次启动(也就是说只要检测条件达到,停止子程序然后启动,多次后就会形成有多个子程序在同时执行。
代码是这样的:
Set dm = createobject("dm.dmsoft")//绑定大漠
//【多线程开始】
//定义子线程数
Dimenv 控制器,ID1,ID2,控制器2
ID1 = BeginThread (XC1)
ID2 = BeginThread (XC2)
控制器 = 0
控制器2 = 0
//主线程
Do
Delay 2000
If 控制器2 = 1 Then
启动线程2 = BeginThread(XC2)
控制器2 = 0
控制器 = 0
End If
If 控制器 = 1 Then
StopThread ID2
Delay 1000
控制器2 = 1
End If
Loop

//线程1---------------------------------------------
Sub XC1
Set dm = createobject("dm.dmsoft")//绑定大漠
banding = dm.BindWindowEx(.....)//绑定窗口//不管他
dm.EnableShareDict 1
dm_ret = dm.UseDict(0)//选择字库
do
If dm.IsDisplayDead(987, 642, 1017, 714, 60) Then
TracePrint "检测到卡屏了,重置处理"
控制器 = 1
End If
loop
End Sub

//线程2---------------------------------------------
Sub XC2
Set dm = createobject("dm.dmsoft")//绑定大漠
banding = dm.BindWindowEx(.....)//绑定窗口//不管他
dm.EnableShareDict 1
dm_ret = dm.UseDict(0)//选择字库
do
Dim dtx,dty,dsx,dsy
//【寻找附近最近挂机点】
//注:coordinate为目标坐标,range为距离,Arr为目标坐标的数组,Ub为目标坐标有多少组
dTx = dm.Ocr(994, 663, 1010, 673, "980204-670204|5A0404-2A0404|FF0000-000000|980404-670404", 0.9)
dTy = dm.Ocr(994, 699, 1010, 709, "980204-670204|5A0404-2A0404|FF0000-000000|980404-670404", 0.9)//识别坐标
TracePrint "识别坐标为:" & dtx & "," & dty
Dsx = CLng(dTx)
Dsy = CLng(dTy)
TracePrint "人物当前坐标为:" & Dsx & "," & Dsy
......................
......................
.......................//移动到目标坐标等等。。。。就没复制了
end sub
展开
 我来答
店若器M
游戏玩家

2018-08-08 · 非著名电竞玩家
知道大有可为答主
回答量:1万
采纳率:75%
帮助的人:2776万
展开全部
问题就出在这句
启动线程2 = BeginThread(XC2)
多线程不应该改变量名
应该改为
ID2 = BeginThread (XC2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式