chnlikang 发表于 2010-5-18 21:03:29

AU3存在“单线程无法多线程”的问题吗?【已解决】

本帖最后由 chnlikang 于 2010-5-20 07:58 编辑

AU3存在“单线程无法多线程”的问题吗?如有【继续求解】那个贴存在的问题。
关于退出有 EXIT 退出脚本,和exitloop中断循环。有没有一个能直接退出循环的或自定义函数的,不是中断循环,是立刻退出。也不是直接结束程序的,只是立刻退出返回主脚本的。别说是Return,如果是给个强悍的例子,大家一起学习下。新手努力学习中,见笑啦。

netegg 发表于 2010-5-18 23:31:00

返回主脚本是什么意思,循环后面的代码还是代码开始

yhxhappy 发表于 2010-5-18 23:43:15

我觉得这样也能退出啊
$exit = ""
While 1
        For $i = 1 To 5
                MsgBox(0, "", "当前数字:" & $i)
                If $i = 3 Then
                        $exit = "Y"
                        ExitLoop
                EndIf
        Next
        If $exit = "Y" Then
                MsgBox(0, "", "退出总循环")
                ExitLoop
        EndIf
WEnd

3mile 发表于 2010-5-19 09:09:06

不明白中断循环和退出循环有什么区别。

chnlikang 发表于 2010-5-19 09:23:22

回复 2# netegg


    ONEVENT 模式下的主脚本,
一般为
while 1
       sleep(1000)
wend
循环后面有代码的执行后面的,没代码的返回代码开始

netegg 发表于 2010-5-19 11:56:24

不是很明白,是这样的结构吗
func function1()
.。。
endfunc
while 1
sleep(100)
wend
func function2()
。。。
endfunc

netegg 发表于 2010-5-19 11:56:30

不是很明白,是这样的结构吗
func function1()
.。。
endfunc
while 1
sleep(100)
wend
func function2()
。。。
endfunc

chnlikang 发表于 2010-5-19 18:34:38

本帖最后由 chnlikang 于 2010-5-19 18:45 编辑

回复 7# netegg
看这个例子是我提的问题所在#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("例子", 258, 123, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")

$Button1 = GUICtrlCreateButton("开始演示", 24, 40, 75, 25)
GUICtrlSetOnEvent(-1, "Button1Click")
$Button2 = GUICtrlCreateButton("停止演示", 152, 40, 75, 25)
GUICtrlSetOnEvent(-1, "Button2Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $a=0
While 1
        Select
                Case $a=1
                        While 1
                                If $a=2 Then ExitLoop
                                Sleep(500)
                                MsgBox(0,"","现在请你按停止键")
                                Sleep(500)
                                MsgBox(0,"","是不是还没有停止呀")
                                Sleep(500)
                                MsgBox(0,"","循环中的msgbox共有7个,这是第3个")
                                Sleep(500)
                                MsgBox(0,"","$a在点击停止按钮后就=2了,但是后面的代码还在运行。")
                                Sleep(500)
                                MsgBox(0,"","这是第5个msgbox,当$a=2时循环是停止了,但不是立刻退出")
                                Sleep(500)
                                MsgBox(0,"","直到运行到第7个MSGBOX,才退出,这是第6个")
                                Sleep(500)
                                MsgBox(0,"","这是第7个, 循环代码退出。但并不是程序不退出,不是EXIT的效果")
                                Sleep(500)
                        WEnd
                           Case $a=2
                        $a=0
                        MsgBox(0,"","循环终于停止啦")
        EndSelect                       
                               
WEnd

Func Button1Click()
        $a=1

EndFunc
Func Button2Click()
        $a=2

EndFunc
Func Form1Close()
        MsgBox(0,"","不只我匆匆写下这个例子,你可明白我提问的问题")
        Exit

EndFunc

netegg 发表于 2010-5-19 19:46:26

你这个程序能运行?

chnlikang 发表于 2010-5-20 08:29:27

参考http://www.autoitx.com/forum.php?mod=viewthread&tid=13290后问题解决

knelia 发表于 2014-6-13 11:25:20

学习了 ,不错!

blue003 发表于 2019-3-6 00:43:43

非常感谢了
页: [1]
查看完整版本: AU3存在“单线程无法多线程”的问题吗?【已解决】