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()
{
// 실행 내용
}
}
이 예제에서 메인 스레드가 종료되면 백그라운드 스레드는 즉시 중단됩니다.
그러나 포어그라운드 스레드는 해당 작업이 완료될 때까지 계속 실행됩니다.
반응형
'Programming > C/C++/C#' 카테고리의 다른 글
C# 동기화 처리 (0) | 2017.09.23 |
---|---|
C# 성능 측정 (0) | 2017.09.05 |
C++ 에서 동적 메모리의 할당(malloc, new)과 해제(free,delete) 원리 (0) | 2017.08.30 |
C++ WIndow Styles (0) | 2017.08.12 |
C# 에코 서버 만들기 (1) | 2017.07.31 |
C# - 스레드를 이용한 외부 데이터 받기(With Tread) (0) | 2017.07.11 |
C# 윈도우 핸들 찾기(FIndWindow) (0) | 2017.07.02 |
C# - 스레드의 생명주기 확인 예제 (0) | 2017.06.17 |