Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 스레드를 일시 중지하는 방법 – Thread.Sleep() 완벽 가이드

C#에서 스레드를 일정 시간 동안 일시 중지하려면 Thread.Sleep() 메서드를 사용합니다. 이 메서드는 현재 실행 중인 스레드를 지정한 시간만큼 멈추고, 그동안 CPU 자원을 다른 스레드에 양보합니다.

Thread.Sleep() 메서드의 기본 사용법

Sleep() 메서드에는 일시 중지할 시간을 밀리초(ms) 단위로 전달해야 합니다. 예를 들어, 스레드를 5초 동안 멈추고 싶다면 다음과 같이 작성합니다.

Thread.Sleep(5000);

1초 = 1000밀리초이므로, 원하는 초 단위 시간에 1000을 곱하면 됩니다.

예제 코드

아래 예제는 반복문 안에서 Sleep() 메서드를 호출하여 매번 1초씩 스레드를 일시 중지하는 방법을 보여줍니다.

using System;
using System.Threading;

namespace Sample {
    class Demo {
        static void Main(string[] args) {
            for (int i = 0; i < 10; i++) {
                Console.WriteLine("Sleep for 1 second!");
                Thread.Sleep(1000);
            }
            Console.ReadLine();
        }
    }
}

코드 설명

  • using System.Threading; — Thread 클래스를 사용하기 위해 네임스페이스를 가져옵니다.
  • for 루프가 총 10번 반복됩니다.
  • 각 반복마다 메시지를 출력한 뒤 Thread.Sleep(1000)으로 1초(1000밀리초) 동안 스레드를 멈춥니다.

실행 결과

프로그램을 실행하면 1초 간격으로 아래와 같은 메시지가 총 10번 출력됩니다.

Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!
Sleep for 1 second!

참고 사항

  • Thread.Sleep(0)은 현재 스레드의 남은 시간 조각을 즉시 양보하며, 실질적인 대기 없이 스케줄러에게 제어권을 넘깁니다.
  • Thread.Sleep(Timeout.Infinite)를 사용하면 다른 스레드가 Interrupt()를 호출하기 전까지 스레드가 무기한 대기 상태가 됩니다.
  • UI 애플리케이션에서 메인 스레드에 Sleep()을 호출하면 화면이 응답하지 않는 것처럼 보일 수 있으므로 주의해야 합니다.