Jump to content
Sign in to follow this  
ihackbr

Problem with Sleep and Exit Loop

Recommended Posts

ihackbr

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
ihackbr

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
Yashied

#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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.