Thread.Sleep Thread.Sleep Thread.Sleep Thread.Sleep Method

정의

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

오버로드

Sleep(Int32) Sleep(Int32) Sleep(Int32) Sleep(Int32)

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

Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan)

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

Sleep(Int32) Sleep(Int32) Sleep(Int32) 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 Int32 Int32 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. 그러나 스레드를 동기화 하거나 리소스를 관리 하는 대신 Mutex, Monitor, EventWaitHandle 또는 Semaphore와 같은 다른 System.Threading 클래스를 사용 하는 것이 좋습니다.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. 시계 확인 및 대기 시간에 대 한 자세한 내용은 참조는 함수를 절전 모드로 전환 항목.For more information on clock resolution and the waiting time, see the Sleep function topic. 이 메서드를 호출 합니다 함수를 절전 모드로 전환 Api Windows 시스템에서.This method calls the Sleep function from the Windows system APIs.

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

참고

있는 스레드를 대기 해야 하는 경우 STAThreadAttribute를 오버 로드 중 하나를 사용 하는 것이 좋습니다, 표준 COM 및 SendMessage 펌프를 수행 하려는 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) Sleep(TimeSpan) Sleep(TimeSpan) 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 TimeSpan TimeSpan TimeSpan

스레드가 일시 중단되는 시간입니다.The amount of time for which the thread is suspended. millisecondsTimeout 인수의 값이 Zero이면 스레드는 실행할 준비가 된 우선 순위가 같은 스레드에 나머지 시간 간격을 내어 줍니다.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.

예외

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. 그러나 스레드를 동기화 하거나 리소스를 관리 하는 대신 Mutex, Monitor, EventWaitHandle 또는 Semaphore와 같은 다른 System.Threading 클래스를 사용 하는 것이 좋습니다.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.

참고

있는 스레드를 대기 해야 하는 경우 STAThreadAttribute를 오버 로드 중 하나를 사용 하는 것이 좋습니다, 표준 COM 및 SendMessage 펌프를 수행 하려는 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.

적용 대상