Sign in to follow this  
Followers 0
ihackbr

Problem with Sleep and Exit Loop

3 posts in this topic

Im getting a problem exiting from a loop with a SLEEP in it.

I click on CANCEL to ExitLoop, but it doesnt work. If i keep clicking on it, sometimes it work.

If i reduce sleep time, or delete it, it works fine. But, how higher the sleep is, more difficulte is to exit loop.

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $loop = 0

$BreakLoop = GUICreate("Break Loop", 218, 101, 193, 125)
$Status = GUICtrlCreateLabel("Loop : ", 24, 10, 75, 25, 0)
$GO = GUICtrlCreateButton("GO", 24, 48, 65, 25, 0)
$Cancel = GUICtrlCreateButton("Cancel", 104, 48, 75, 25, 0)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GO
            loop()
    EndSwitch
WEnd

Func loop()
While 1
    GUICtrlSetData($Status, "Loop in Progress: " & $loop)
    $nMsg = GUIGetMsg()

    If $nMsg = $Cancel Then
        $Abort = MsgBox(36, "Cancel?", "Are you sure you want to cancel?")
        If $Abort = 6 Then
            ExitLoop
            Return
        EndIf
    Else
        Sleep(500)
        $loop = $loop + 1
        Sleep(500)
    EndIf

WEnd
EndFunc ;loop

Does anybody know what is happening?

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Your GUI is sleeping just like you told it to. It's kind of hard for it to do anything while it's sleeping, that's why it's unresponsive.

Ok. But i need this time before run the loop again.

How can i do a loop and wait a feel seconds before run the commands again and cancel it any time?

Edited by ihackbr

Share this post


Link to post
Share on other sites

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $loop = 0

$BreakLoop = GUICreate("Break Loop", 218, 101, 193, 125)
$Status = GUICtrlCreateLabel("Loop : ", 24, 10, 75, 25, 0)
$GO = GUICtrlCreateButton("GO", 24, 48, 65, 25, 0)
$Cancel = GUICtrlCreateButton("Cancel", 104, 48, 75, 25, 0)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GO
            loop()
    EndSwitch
WEnd

Func loop()
    While 1
        GUICtrlSetData($Status, "Loop in Progress: " & $loop)
        $TD = TimerInit()
        While TimerDiff($TD) <= 1000
            $nMsg = GUIGetMsg()
            If $nMsg = $Cancel Then
                If MsgBox(36, "Cancel?", "Are you sure you want to cancel?") = 6 Then
                    Return
                EndIf
            EndIf
        WEnd
        $loop += 1
    WEnd
EndFunc   ;==>loop

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0