C# 스레드: 포어그라운드 vs 백그라운드

C#에서 스레드는 주로 포어그라운드(Foreground)와 백그라운드(Background) 두 유형으로 나뉩니다. 이 두 유형은 어플리케이션의 생명 주기와 관련하여 서로 다르게 동작합니다.

포어그라운드 스레드 (Foreground Thread)

  • 생명 주기: 포어그라운드 스레드는 해당 프로세스의 모든 포어그라운드 스레드가 완료될 때까지 프로세스를 계속 실행 상태로 유지합니다. 즉, 메인 스레드가 종료되더라도 실행 중인 포어그라운드 스레드가 있다면 프로세스는 종료되지 않습니다.
  • 기본값: 스레드를 직접 생성하면 기본적으로 포어그라운드 스레드로 설정됩니다.

백그라운드 스레드 (Background Thread)

  • 생명 주기: 백그라운드 스레드는 프로세스의 생명 주기에 영향을 주지 않습니다. 메인 스레드 또는 모든 포어그라운드 스레드가 종료되면 백그라운드 스레드는 즉시 중단됩니다.
  • 기본값: ThreadPool을 통해 스레드를 생성하면, 그 스레드는 기본적으로 백그라운드로 설정됩니다.

예제:

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        Thread foregroundThread = new Thread(ForegroundTask);
        foregroundThread.Name = "ForegroundThread";

        Thread backgroundThread = new Thread(BackgroundTask);
        backgroundThread.Name = "BackgroundThread";
        backgroundThread.IsBackground = true; // 백그라운드 스레드로 설정

        foregroundThread.Start();
        backgroundThread.Start();
    }

    static void ForegroundTask()
    {
        // 실행 내용
    }

    static void BackgroundTask()
    {
        // 실행 내용
    }
}

이 예제에서 메인 스레드가 종료되면 백그라운드 스레드는 즉시 중단됩니다.
그러나 포어그라운드 스레드는 해당 작업이 완료될 때까지 계속 실행됩니다.

반응형