Thread.Sleep 메서드

정의

지정된 시간 동안 현재 스레드를 일시 중단합니다.Suspends the current thread for the specified amount of time.

오버로드

Sleep(Int32)

지정된 시간(밀리초) 동안 현재 스레드를 일시 중단합니다.Suspends the current thread for the specified number of milliseconds.

Sleep(TimeSpan)

지정된 시간 동안 현재 스레드를 일시 중단합니다.Suspends the current thread for the specified amount of time.

Sleep(Int32)

지정된 시간(밀리초) 동안 현재 스레드를 일시 중단합니다.Suspends the current thread for the specified number of milliseconds.

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

스레드가 일시 중단되는 밀리초 수입니다.The number of milliseconds for which the thread is suspended. millisecondsTimeout 인수의 값이 0이면 스레드는 실행할 준비가 된 우선 순위가 같은 스레드에 나머지 시간 간격을 내어 줍니다.If the value of the millisecondsTimeout argument is zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. 실행할 준비가 된 우선 순위가 같은 스레드가 없으면 현재 스레드의 실행이 일시 중단되지 않습니다.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

예외

시간 제한 값이 음수이며 Infinite와 같지 않습니다.The time-out value is negative and is not equal to Infinite.

예제

다음 예제에서는 Sleep 애플리케이션의 주 스레드를 차단 하는 방법입니다.The following example uses the Sleep method to block the application's main thread.

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.

설명

지정 된 시간 동안 운영 체제에서 실행 되도록 스레드를 예약 하지 않습니다.The thread will not be scheduled for execution by the operating system for the amount of time specified. 이 메서드는 포함 하도록 스레드의 상태를 변경 WaitSleepJoin 합니다.This method changes the state of the thread to include WaitSleepJoin.

매개 변수에 대해을 지정 하 여 Timeout.Infinite millisecondsTimeout 스레드를 무기한 일시 중단할 수 있습니다.You can specify Timeout.Infinite for the millisecondsTimeout parameter to suspend the thread indefinitely. 그러나,,, 등의 다른 클래스를 사용 하 여 System.Threading Mutex 스레드를 Monitor EventWaitHandle Semaphore 동기화 하거나 리소스를 관리 하는 것이 좋습니다.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

클록 해상도 라고 하는 특정 속도의 시스템 클록 틱입니다.The system clock ticks at a specific rate called the clock resolution. 지정 된 시간 제한이 클록 틱과 일치 하도록 조정 되기 때문에 실제 시간 제한은 지정 된 시간 제한에 정확 하지 않을 수 있습니다.The actual timeout might not be exactly the specified timeout, because the specified timeout will be adjusted to coincide with clock ticks. 클록 해상도 및 대기 시간에 대 한 자세한 내용은 Windows 시스템 Api의 Sleep 함수 를 참조 하세요.For more information on clock resolution and the waiting time, see the Sleep function from the Windows system APIs.

이 메서드는 표준 COM 및 SendMessage 펌프를 수행 하지 않습니다.This method does not perform standard COM and SendMessage pumping.

참고

가 있지만 표준 COM 및 SendMessage 펌프를 수행 하려는 스레드에서 절전 모드로 전환 해야 하는 경우 STAThreadAttribute Join 시간 제한 간격을 지정 하는 메서드의 오버 로드 중 하나를 사용 하는 것이 좋습니다.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

적용 대상

Sleep(TimeSpan)

지정된 시간 동안 현재 스레드를 일시 중단합니다.Suspends the current thread for the specified amount of time.

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

스레드가 일시 중단되는 시간입니다.The amount of time for which the thread is suspended. timeout 인수의 값이 Zero이면 스레드는 실행할 준비가 된 우선 순위가 같은 스레드에 나머지 시간 간격을 내어 줍니다.If the value of the timeout argument is Zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. 실행할 준비가 된 우선 순위가 같은 스레드가 없으면 현재 스레드의 실행이 일시 중단되지 않습니다.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

예외

timeout 값이 음수이고 Infinite(밀리초)와 같지 않거나 MaxValue(밀리초)보다 큽니다.The value of timeout is negative and is not equal to Infinite in milliseconds, or is greater than MaxValue milliseconds.

예제

다음 예제에서는 Sleep(TimeSpan) 메서드 오버 로드를 2 초 동안 때마다 다섯 번 애플리케이션의 주 스레드를 차단 합니다.The following example uses the Sleep(TimeSpan) method overload to block the application's main thread five times, for two seconds each time.

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.

설명

지정 된 시간 동안 운영 체제에서 실행 되도록 스레드를 예약 하지 않습니다.The thread will not be scheduled for execution by the operating system for the amount of time specified. 이 메서드는 포함 하도록 스레드의 상태를 변경 WaitSleepJoin 합니다.This method changes the state of the thread to include WaitSleepJoin.

매개 변수에 대해을 지정 하 여 Timeout.InfiniteTimeSpan timeout 스레드를 무기한 일시 중단할 수 있습니다.You can specify Timeout.InfiniteTimeSpan for the timeout parameter to suspend the thread indefinitely. 그러나,,, 등의 다른 클래스를 사용 하 여 System.Threading Mutex 스레드를 Monitor EventWaitHandle Semaphore 동기화 하거나 리소스를 관리 하는 것이 좋습니다.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

의이 오버 로드는의 전체 Sleep 밀리초 수를 사용 timeout 합니다.This overload of Sleep uses the total number of whole milliseconds in timeout. 소수 자릿수 밀리초는 무시 됩니다.Fractional milliseconds are discarded.

이 메서드는 표준 COM 및 SendMessage 펌프를 수행 하지 않습니다.This method does not perform standard COM and SendMessage pumping.

참고

가 있지만 표준 COM 및 SendMessage 펌프를 수행 하려는 스레드에서 절전 모드로 전환 해야 하는 경우 STAThreadAttribute Join 시간 제한 간격을 지정 하는 메서드의 오버 로드 중 하나를 사용 하는 것이 좋습니다.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

적용 대상