Thread.Sleep 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 시간 동안 현재 스레드를 일시 중단합니다.
오버로드
| Name | Description |
|---|---|
| Sleep(Int32) |
지정된 시간(밀리초)에 대한 현재 스레드를 일시 중단합니다. |
| Sleep(TimeSpan) |
지정된 시간 동안 현재 스레드를 일시 중단합니다. |
Sleep(Int32)
- Source:
- Thread.cs
- Source:
- Thread.cs
- Source:
- Thread.cs
- Source:
- Thread.cs
- Source:
- Thread.cs
지정된 시간(밀리초)에 대한 현재 스레드를 일시 중단합니다.
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 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.
*/
open System.Threading
for _ = 0 to 4 do
printfn "Sleep for 2 seconds."
Thread.Sleep 2000
printfn "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.
매개 변수가 스레드를 Timeout.Infinite 무기한 일시 중단하도록 지정할 millisecondsTimeout 수 있습니다. 그러나 스레드를 동기화하거나 리소스를 System.Threading관리하는 대신 , MutexMonitor또는 같은 다른 EventWaitHandle 클래스를 사용하는 것이 Semaphore 좋습니다.
시스템 클록은 클록 해상도라는 특정 속도로 틱합니다. 지정된 시간 제한이 클록 틱과 일치하도록 조정되므로 실제 시간 제한은 지정된 시간 제한이 아닐 수 있습니다. 클록 해상도 및 대기 시간에 대한 자세한 내용은 Windows 시스템 API에서 Sleep 함수 참조하세요.
이 메서드는 표준 COM 및 SendMessage 펌핑을 수행하지 않습니다.
메모
스레드에서 STAThreadAttribute절전 모드로 전환해야 하지만 표준 COM 및 SendMessage 펌핑을 수행하려는 경우 시간 제한 간격을 지정하는 메서드의 Join 오버로드 중 하나를 사용하는 것이 좋습니다.
적용 대상
Sleep(TimeSpan)
- Source:
- Thread.cs
- Source:
- Thread.cs
- Source:
- Thread.cs
- Source:
- Thread.cs
- Source:
- Thread.cs
지정된 시간 동안 현재 스레드를 일시 중단합니다.
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실행 준비가 된 동일한 우선 순위의 스레드에 나머지 시간 조각을 포기합니다. 실행할 준비가 된 동일한 우선 순위의 다른 스레드가 없으면 현재 스레드의 실행이 일시 중단되지 않습니다.
예외
값이 음수 timeout 이고 밀리초 단위가 아니 Infinite 거나 Int32.MaxValue 밀리초보다 큽니다.
예제
다음 예제에서는 메서드 오버로드를 Sleep(TimeSpan) 사용하여 매번 2초 동안 애플리케이션의 주 스레드를 5번 차단합니다.
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.
*/
open System
open System.Threading
let interval = TimeSpan(0, 0, 2)
for _ = 0 to 4 do
printfn "Sleep for 2 seconds."
Thread.Sleep interval
printfn "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.InfiniteTimeSpan 무기한 일시 중단하도록 지정할 timeout 수 있습니다. 그러나 스레드를 동기화하거나 리소스를 System.Threading관리하는 대신 , MutexMonitor또는 같은 다른 EventWaitHandle 클래스를 사용하는 것이 Semaphore 좋습니다.
이 오버로드는 Sleep 전체 밀리초(밀리초 timeout)를 사용합니다. 소수 밀리초는 무시됩니다.
이 메서드는 표준 COM 및 SendMessage 펌핑을 수행하지 않습니다.
메모
스레드에서 STAThreadAttribute절전 모드로 전환해야 하지만 표준 COM 및 SendMessage 펌핑을 수행하려는 경우 시간 제한 간격을 지정하는 메서드의 Join 오버로드 중 하나를 사용하는 것이 좋습니다.