Thread.Sleep 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 시간 동안 현재 스레드를 일시 중단합니다.
오버로드
Sleep(Int32) |
지정된 시간(밀리초) 동안 현재 스레드를 일시 중단합니다. |
Sleep(TimeSpan) |
지정된 시간 동안 현재 스레드를 일시 중단합니다. |
Sleep(Int32)
지정된 시간(밀리초) 동안 현재 스레드를 일시 중단합니다.
public:
static void Sleep(int millisecondsTimeout);
public static void Sleep (int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)
매개 변수
- millisecondsTimeout
- Int32
스레드가 일시 중단되는 밀리초 수입니다. millisecondsTimeout
인수의 값이 0이면 스레드는 실행할 준비가 된 우선 순위가 같은 스레드에 나머지 시간 간격을 내어 줍니다. 실행할 준비가 된 우선 순위가 같은 스레드가 없으면 현재 스레드의 실행이 일시 중단되지 않습니다.
예외
시간 제한 값이 음수이며 Infinite와 같지 않습니다.
예제
다음 예제에서는 Sleep 애플리케이션의 주 스레드를 차단 하는 방법입니다.
using namespace System;
using namespace System::Threading;
int main()
{
for (int i = 0; i < 5; i++)
{
Console::WriteLine("Sleep for 2 seconds.");
Thread::Sleep(2000);
}
Console::WriteLine("Main thread exits.");
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
using System;
using System.Threading;
class Example
{
static void Main()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Sleep for 2 seconds.");
Thread.Sleep(2000);
}
Console.WriteLine("Main thread exits.");
}
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
Imports System.Threading
Class Example
Shared Sub Main()
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(2000)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.
설명
지정된 시간 동안 운영 체제에서 스레드 실행을 예약하지 않습니다. 이 메서드는 포함할 스레드의 상태를 변경합니다 WaitSleepJoin.
매개 변수가 스레드를 millisecondsTimeout
무기한 일시 중단하도록 지정할 Timeout.Infinite 수 있습니다. 그러나 스레드를 동기화하거나 리소스를 Mutex관리하는 대신 , EventWaitHandleMonitor또는 같은 다른 System.Threading 클래스를 사용하는 것이 Semaphore 좋습니다.
시스템 클록은 클록 해상도라는 특정 속도로 틱합니다. 지정된 시간 제한이 클록 틱과 일치하도록 조정되므로 실제 시간 제한은 지정된 시간 제한과 정확히 일치하지 않을 수 있습니다. 클록 해상도 및 대기 시간에 대한 자세한 내용은 Windows 시스템 API의 절전 모드 함수를 참조하세요.
이 메서드는 표준 COM 및 SendMessage 펌핑을 수행하지 않습니다.
참고
스레드 STAThreadAttribute에서 절전 모드로 전환해야 하지만 표준 COM 및 SendMessage 펌핑을 수행하려는 경우 시간 제한 간격을 지정하는 메서드의 Join 오버로드 중 하나를 사용하는 것이 좋습니다.
적용 대상
Sleep(TimeSpan)
지정된 시간 동안 현재 스레드를 일시 중단합니다.
public:
static void Sleep(TimeSpan timeout);
public static void Sleep (TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)
매개 변수
- timeout
- TimeSpan
스레드가 일시 중단되는 시간입니다. timeout
인수의 값이 Zero이면 스레드는 실행할 준비가 된 우선 순위가 같은 스레드에 나머지 시간 간격을 내어 줍니다. 실행할 준비가 된 우선 순위가 같은 스레드가 없으면 현재 스레드의 실행이 일시 중단되지 않습니다.
예외
예제
다음 예제에서는 Sleep(TimeSpan) 메서드 오버 로드를 2 초 동안 때마다 다섯 번 애플리케이션의 주 스레드를 차단 합니다.
using namespace System;
using namespace System::Threading;
int main()
{
TimeSpan interval = TimeSpan(0, 0, 2);
for (int i = 0; i < 5; i++)
{
Console::WriteLine("Sleep for 2 seconds.");
Thread::Sleep(interval);
}
Console::WriteLine("Main thread exits.");
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
using System;
using System.Threading;
class Example
{
static void Main()
{
TimeSpan interval = new TimeSpan(0, 0, 2);
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Sleep for 2 seconds.");
Thread.Sleep(interval);
}
Console.WriteLine("Main thread exits.");
}
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
Imports System.Threading
Class Example
Shared Sub Main()
Dim interval As New TimeSpan(0, 0, 2)
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(interval)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.
설명
지정된 시간 동안 운영 체제에서 스레드 실행을 예약하지 않습니다. 이 메서드는 포함할 스레드의 상태를 변경합니다 WaitSleepJoin.
매개 변수가 스레드를 timeout
무기한 일시 중단하도록 지정할 Timeout.InfiniteTimeSpan 수 있습니다. 그러나 스레드를 동기화하거나 리소스를 Mutex관리하는 대신 , EventWaitHandleMonitor또는 같은 다른 System.Threading 클래스를 사용하는 것이 Semaphore 좋습니다.
이 오버로드는 Sleep .에서 전체 밀리초 timeout
의 총 수를 사용합니다. 소수 밀리초는 무시됩니다.
이 메서드는 표준 COM 및 SendMessage 펌핑을 수행하지 않습니다.
참고
스레드 STAThreadAttribute에서 절전 모드로 전환해야 하지만 표준 COM 및 SendMessage 펌핑을 수행하려는 경우 시간 제한 간격을 지정하는 메서드의 Join 오버로드 중 하나를 사용하는 것이 좋습니다.