关于易语言多线程的问题(请看代码)
.版本2.支持库EThread.支持库dm.子程序_按钮3_被单击启动线程(&开始,3,线程句柄)DM.SetPath(“F:\dm\2.1142”)结果坐标=DM.Fi...
.版本 2.支持库 EThread.支持库 dm
.子程序 _按钮3_被单击
启动线程 (&开始
, 3, 线程句柄)DM.SetPath (“F:\dm\2.1142”)结果坐标 = DM.FindPicE (290, 391, 407, 528, “圆圈.bmp”, “000000”, 1, 0) ' 查找指定区域内的图片最大长度 = 分割文本 (结果坐标, “|”, )最大长度 = 分割文本 (结果坐标, “-”, )编辑框1.内容 = 最大长度 [1].如果真 (编辑框1.内容 > 到文本 (“ 0”)) DM.MoveTo (345, 463) 延时 (400) DM.LeftClick () 延时 (400) DM.MoveTo (437, 479) 延时 (400) DM.LeftClick ()
.如果真结束
.子程序 开始延时 (2000)DM.SetPath (“F:\dm\2.1142”)有图片 = DM.FindPicE (406, 372, 507, 456, “问好2.bmp”, “000000”, 1, 0) ' 查找指定区域内的图片有图片x = 分割文本 (有图片, “|”, )延时 (400)编辑框28.内容 = 有图片x [2]延时 (400).如果真 (编辑框28.内容 > 到文本 (“0”)) DM.MoveTo (204, 364) 延时 (400) DM.LeftClick () 延时 (400) DM.MoveTo (410, 284) 延时 (400) DM.LeftClick () 延时 (800).如果真结束
DM.SetPath (“F:\dm\2.1142”)结果坐标 = DM.FindPicE (290, 391, 407, 528, “圆圈.bmp”, “000000”, 1, 0) ' 查找指定区域内的图片最大长度 = 分割文本 (结果坐标, “|”, )最大长度 = 分割文本 (结果坐标, “-”, )编辑框1.内容 = 最大长度 [1].如果真 (编辑框1.内容 > 到文本 (“ 0”)) DM.MoveTo (338, 494) 延时 (100) DM.LeftClick () 延时 (100) DM.MoveTo (432, 471) 延时 (100) DM.LeftClick () 延时 (300) DM.MoveTo (461, 241) 延时 (200) DM.LeftClick ()
.如果真结束延时 (100).计次循环首 (到整数 (编辑框29.内容), 啊) 开始 ().计次循环尾 ()
上面有截图,下面有源码。看清楚我想问的问题。源码正常。
我想问,在按钮3单击的情况下不是应该只执行下面的源码吗?还是执行下面的源码过后直接执行下一个子程序?我之前没用多线程的时候,计次循环的源码是在上面的。不是很明白原理,有高手讲解下吗?还是在启动线程的时候,启动线程的那个程序就已经在执行了? 展开
.子程序 _按钮3_被单击
启动线程 (&开始
, 3, 线程句柄)DM.SetPath (“F:\dm\2.1142”)结果坐标 = DM.FindPicE (290, 391, 407, 528, “圆圈.bmp”, “000000”, 1, 0) ' 查找指定区域内的图片最大长度 = 分割文本 (结果坐标, “|”, )最大长度 = 分割文本 (结果坐标, “-”, )编辑框1.内容 = 最大长度 [1].如果真 (编辑框1.内容 > 到文本 (“ 0”)) DM.MoveTo (345, 463) 延时 (400) DM.LeftClick () 延时 (400) DM.MoveTo (437, 479) 延时 (400) DM.LeftClick ()
.如果真结束
.子程序 开始延时 (2000)DM.SetPath (“F:\dm\2.1142”)有图片 = DM.FindPicE (406, 372, 507, 456, “问好2.bmp”, “000000”, 1, 0) ' 查找指定区域内的图片有图片x = 分割文本 (有图片, “|”, )延时 (400)编辑框28.内容 = 有图片x [2]延时 (400).如果真 (编辑框28.内容 > 到文本 (“0”)) DM.MoveTo (204, 364) 延时 (400) DM.LeftClick () 延时 (400) DM.MoveTo (410, 284) 延时 (400) DM.LeftClick () 延时 (800).如果真结束
DM.SetPath (“F:\dm\2.1142”)结果坐标 = DM.FindPicE (290, 391, 407, 528, “圆圈.bmp”, “000000”, 1, 0) ' 查找指定区域内的图片最大长度 = 分割文本 (结果坐标, “|”, )最大长度 = 分割文本 (结果坐标, “-”, )编辑框1.内容 = 最大长度 [1].如果真 (编辑框1.内容 > 到文本 (“ 0”)) DM.MoveTo (338, 494) 延时 (100) DM.LeftClick () 延时 (100) DM.MoveTo (432, 471) 延时 (100) DM.LeftClick () 延时 (300) DM.MoveTo (461, 241) 延时 (200) DM.LeftClick ()
.如果真结束延时 (100).计次循环首 (到整数 (编辑框29.内容), 啊) 开始 ().计次循环尾 ()
上面有截图,下面有源码。看清楚我想问的问题。源码正常。
我想问,在按钮3单击的情况下不是应该只执行下面的源码吗?还是执行下面的源码过后直接执行下一个子程序?我之前没用多线程的时候,计次循环的源码是在上面的。不是很明白原理,有高手讲解下吗?还是在启动线程的时候,启动线程的那个程序就已经在执行了? 展开
展开全部
你用启动线程 线程就独立运行 启动完线程直接继续执行启动线程下面的代码 不会等线程结束再执行下面的代码
追问
不会等线程结束再执行下面的代码
这个我明白。你看,我线程下面就些许代码,但是我的程序是要循环很多次的。也就是说我要循环线程下面的代码,但是按钮3下面没写循环代码。我的程序依旧循环执行。程序是对的,只是我不明白原理!
追答
.计次循环首 (到整数 (编辑框29.内容), 啊)
开始 ()
.计次循环尾 ()
这一句 会连续调用子程序 开始() 而开始里又会调用 开始()
这就会无限调用 开始()
开始里面有这代码
.如果真 (编辑框1.内容 > 到文本 (“ 0”))
DM.MoveTo (345, 463)
延时 (400)
DM.LeftClick ()
延时 (400)
DM.MoveTo (437, 479)
延时 (400)
DM.LeftClick ()
.如果真结束
跟你按钮3下面的代码一样 所以给你的错觉是循环按钮3下面的代码
其实你
启动线程 (&开始, 3, 线程句柄)
这句下面的代码可以直接删除掉
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询