UI 스레드 (메인 스레드)
- 역할:
- 폼과 컨트롤을 생성하고 관리하며, 사용자 입력(클릭, 키 입력 등)과 같은 이벤트를 처리합니다.
- Windows 메시지 루프(Message Loop)를 통해 모든 UI 이벤트를 순차적으로 처리합니다.
- 특징:
- UI 업데이트는 반드시 이 스레드에서 실행되어야 합니다.
- 다른 스레드에서 UI에 접근할 경우 Invoke나 BeginInvoke 같은 메서드를 통해 UI 스레드로 작업을 넘겨야 합니다.
- 타이머 관련:
- System.Windows.Forms.Timer:
- UI 스레드의 메시지 루프에서 동작하는 타이머입니다.
- 타이머의 Tick 이벤트는 UI 스레드에서 호출되므로, UI 컨트롤의 직접 업데이트가 가능합니다.
- 단, UI 스레드가 바쁘면 타이머 이벤트가 지연될 수 있습니다.
- System.Windows.Forms.Timer:
작업(백그라운드) 스레드
- 역할:
- UI와는 별개로, 데이터 처리, I/O 작업, 주기적인 작업 등 시간이 오래 걸리거나 UI 업데이트와 직접 관련 없는 작업을 수행합니다.
- .NET에서는 주로 스레드 풀(Work Thread Pool)을 이용하여 여러 작업 스레드에서 비동기 작업을 수행합니다.
- 특징:
- UI와 분리되어 있으므로, 무거운 작업이 UI 응답성을 떨어뜨리지 않습니다.
- 작업 스레드에서 UI 작업을 수행하려면 반드시 UI 스레드로 작업을 마샬링(Invoke 등)해야 합니다.
- 타이머 및 스레드 관련:
- System.Threading.Timer:
- .NET 스레드 풀에 있는 작업 스레드에서 콜백을 실행하는 타이머입니다.
- UI와 독립적으로 주기적인 작업을 수행할 수 있으나, UI 업데이트가 필요할 경우 별도의 스레드 전환이 필요합니다.
- System.Threading.Thread:
- 개발자가 명시적으로 생성하는 스레드로, 별도의 실행 흐름에서 코드를 동기적으로 또는 비동기적으로 실행할 수 있습니다.
- UI와는 별개로 작업을 수행하므로, 멀티스레딩을 통해 병렬 처리 또는 백그라운드 처리가 가능합니다.
- System.Threading.Timer:
정리 (타이머와 같이)
- System.Windows.Forms.Timer:
- UI 스레드의 메시지 루프에서 동작하는 타이머. UI 관련 작업에 적합합니다.
- System.Threading.Timer:
- 작업(백그라운드) 스레드, 즉 .NET 스레드 풀에 등록된 스레드에서 콜백되는 타이머. UI와 독립적으로 주기적인 작업을 수행할 수 있습니다.
- System.Timers.Timer
- 동작 방식:
기본적으로는 System.Threading.Timer와 같이 백그라운드(스레드 풀) 스레드에서 Elapsed 이벤트를 발생시킵니다. - 용도 및 특징:
- 이벤트 기반 프로그래밍에 편리하도록 AutoReset, Interval 등의 속성을 제공합니다.
- SynchronizingObject 속성을 설정하면, 이벤트가 지정된 UI 스레드(예: 폼)에서 실행되도록 할 수 있습니다.
- 동작 방식:
- System.Threading.Thread:
- 개발자가 직접 생성하여 사용하는 작업 스레드로, UI 스레드와는 별도로 실행되는 별도의 실행 흐름입니다.
이렇게 UI 스레드는 사용자와의 상호작용 및 UI 업데이트에 집중하고, 작업 스레드는 시간이 많이 걸리는 연산이나 주기적인 작업 등 UI와의 충돌 없이 독립적으로 작업을 수행하도록 설계되어 있습니다.
'Program Language > C# (GUI)' 카테고리의 다른 글
[C# Winform 타이머] System.Windows.Forms.Timer, System.Threading.Timer, System.Timers.Timer (0) | 2025.02.22 |
---|