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

C#에서 Thread.Sleep 메서드로 스레드 일시 정지 구현하기

C# 스레드 Sleep 메서드란?

C#에서 Thread.Sleep 메서드는 현재 실행 중인 스레드를 지정한 시간 동안 일시적으로 멈추고 싶을 때 사용합니다. 특정 작업 사이에 대기 시간이 필요하거나, 스레드의 실행 흐름을 제어하고자 할 때 유용하게 활용됩니다.

예를 들어, 몇 초간 스레드를 재우(sleep)고 싶다면 다음과 같이 밀리초 단위의 값을 인수로 전달하면 됩니다.

int sleepfor = 2000;
Thread.Sleep(sleepfor);

위 코드에서 2000은 2000밀리초, 즉 2초를 의미합니다. Thread.Sleep은 항상 밀리초 단위로 시간을 받기 때문에, 초 단위로 표현하려면 값에 1000을 곱해주어야 한다는 점에 유의하세요.

스레드 Sleep 예제 코드

아래는 자식(child) 스레드를 생성한 뒤 Thread.Sleep으로 2초간 일시 정지시키는 완전한 C# 프로그램입니다. 직접 실행해 보면서 동작 방식을 확인할 수 있습니다.

using System;
using System.Threading;
namespace MyApplication {
    class ThreadCreationProgram {
        public static void CallToChildThread() {
            Console.WriteLine("Child thread starts");
            int sleepfor = 2000;
            Console.WriteLine("Child Thread Paused for {0} seconds", sleepfor / 1000);
            Thread.Sleep(sleepfor);
            Console.WriteLine("Child thread resumes");
        }
        static void Main(string[] args) {
            ThreadStart childref = new ThreadStart(CallToChildThread);
            Console.WriteLine("In Main: Creating the Child thread");
            Thread childThread = new Thread(childref);
            childThread.Start();
            Console.ReadKey();
        }
    }
}

코드 설명

  • ThreadStart 델리게이트: 자식 스레드가 실행할 메서드(CallToChildThread)를 지정합니다.
  • childThread.Start(): 새 스레드를 시작하여 CallToChildThread 메서드를 별도의 실행 흐름에서 호출합니다.
  • Thread.Sleep(2000): 자식 스레드가 2초 동안 일시 정지된 후 다시 실행을 이어갑니다.

실행 결과

위 프로그램을 컴파일하고 실행하면 콘솔에 다음과 같은 출력이 표시됩니다.

In Main: Creating the Child thread
Child thread starts
Child Thread Paused for 2 seconds
Child thread resumes

출력 결과에서 확인할 수 있듯이, 자식 스레드가 시작된 후 2초간 일시 정지되었다가 다시 재개되는 것을 알 수 있습니다. 이처럼 Thread.Sleep은 간단한 코드만으로도 스레드의 실행 타이밍을 손쉽게 제어할 수 있는 기본적이면서도 실용적인 메서드입니다.