Sleep

지정된 시간 동안 기다린 다음 계속 진행합니다.

Sleep, Delay

매개변수

Delay

멈출 시간 (밀리초 단위), 0부터 2147483647까지 (24 일), 표현식 가능.

논평

OS의 시간-유지 시스템의 정밀도 때문에, 지연 시간은 보통 (하드웨어와 설치된 드라이버의 종류에 따라) 가장 가까운 10 또는 15.6 밀리초의 배수로 올림됩니다. 예를 들어, 지연시간이 1부터 10(포함) 사이이면 대부분의 Windows 2000/XP 시스템에서 10 또는 15.6과 동등합니다. 더 짧은 지연 시간이 필요하면, 다음 예제를 참조하십시오.

실제 지연 시간은 CPU에 부하가 많을 경우 요구한 것보다 더 길어질 가능성이 있습니다. 이것은 OS가 스크립트에 또다른 시간조각(timeslice)을 주기 전에 각각의 필요한 프로세스에 CPU 시간을 나누어 주기 때문입니다 (보통 20 밀리초).

지연 시간이 0일 경우 (다른 스크립트보다 우선 순위가 엄청나게 낮지만 않다면) 그를 필요로 하는 다른 프로세스에 스크립트의 현재 시간조각(timeslice)의 나머지를 나누어 줍니다. 그래서, 지연 시간이 0이면 실제 지연 시간은 필요로 하는 프로세스의 개수에 따라 0부터 20ms (이상)이 생산됩니다 (필요로 하는 프로세스가 없다면, 전혀 지연 시간이 없습니다). 그렇지만, Delay가 0이면 더 긴 Delay가 걸렸을 지연 시간보다 언제나 떠 짧게 끝납니다.

잠자는 동안, 핫키, 맞춤 메뉴 항목, 또는 타이머를 통하여 새 쓰레드를 기동할 수 있습니다.

Sleep -1: 지연 시간이 -1이면 잠자지 않지만 대신에 스크립트가 즉시 그의 메시지 큐를 점검하도록 만듭니다. 이것을 사용하면 보류된 인터럽트들을 무작위로 아무데서나 일어나도록 두지 않고 강제로 특정한 위치에서 일어나게 만들 수 있습니다. 자세한 것은 Critical을 참조하십시오.

SetKeyDelay, SetMouseDelay, SetControlDelay, SetWinDelay, SetBatchLines

예제

Waits 1 second before continuing execution.

Sleep 1000

Waits 30 minutes before continuing execution.

MyVar := 30 * 60000 ; 30 means minutes and times 60000 gives the time in milliseconds.
Sleep MyVar ; Sleep for 30 minutes.

Demonstrates how to sleep for less time than the normal 10 or 15.6 milliseconds. 주의: 스크립트가 이런 식으로 실행 중인 동안, 전체 운영체제와 어플이 모두 아래의 timeBeginPeriod에 영향을 받습니다.

SetBatchLines -1  ; 이 방법이 최대로 효과가 있도록 확인합니다.

SleepDuration := 1  ; 이것은 종종 아래의 값에 따라 미세하게 조절할 수 있습니다 (예,  2는 3과 다릅니다).
TimePeriod := 3 ; 7 또는 3을 시도합니다. 아래 주석을 참조하십시오.
; 잠자기 시간이 보통 15.6 밀리초로 올림되는 PC라면, TimePeriod:=7을 시도하면
; 약간 더 짧은 수면 시간을 허용하고, TimePeriod:=3 이하를 시도하면 가능한 짧은 수면 시간을 허용합니다.

DllCall("Winmm\timeBeginPeriod", "UInt", TimePeriod)  ; 이 스크립트의 DllCall("Sleep"...)은 물론이고 모든 어플리케이션에 영향을 줍니다. 그러나 SetTimer에는 영향을 미치지 않습니다.
Iterations := 50
StartTime := A_TickCount

Loop %Iterations%
    DllCall("Sleep", "UInt", SleepDuration)  ; Sleep 명령어 대신에 DllCall을 사용해야 합니다.

DllCall("Winmm\timeEndPeriod", "UInt", TimePeriod)  ; 시스템을 정상으로 복구하려면 호출해야 합니다.
MsgBox % "Sleep duration = " . (A_TickCount - StartTime) / Iterations