System.Windows.Forms.Timer
- UI 스레드 기반:
이 타이머는 Windows Forms 애플리케이션에 최적화되어 있어, UI 스레드의 메시지 루프에 의해 동작합니다. - 이벤트 발생:
타이머 이벤트(예: Tick 이벤트)는 항상 UI 스레드에서 실행되므로, UI 업데이트를 별도의 스레드 동기화 없이 직접 처리할 수 있습니다. - 정밀도:
UI 스레드가 바쁘거나 다른 작업으로 인해 메시지 큐가 밀리면 타이머 이벤트가 지연될 수 있습니다.
System.Threading.Timer
- 백그라운드 스레드 기반:
이 타이머는 .NET 스레드 풀의 백그라운드 스레드에서 콜백을 실행합니다. - 이벤트 발생:
콜백이 UI 스레드가 아닌 별도의 스레드에서 실행되기 때문에, UI 업데이트가 필요하면 Invoke나 BeginInvoke 같은 방법으로 스레드 간 동기화가 필요합니다. - 정밀도 및 독립성:
UI 스레드와 독립적으로 동작하므로, UI 스레드의 부하와 관계없이 보다 일정한 시간 간격으로 작업을 수행할 수 있습니다.
System.Timers.Timer
- 동작 방식:
기본적으로는 System.Threading.Timer와 같이 백그라운드(스레드 풀) 스레드에서 Elapsed 이벤트를 발생시킵니다. - 용도 및 특징:
- 이벤트 기반 프로그래밍에 편리하도록 AutoReset, Interval 등의 속성을 제공합니다.
- SynchronizingObject 속성을 설정하면, 이벤트가 지정된 UI 스레드(예: 폼)에서 실행되도록 할 수 있습니다.
정리
즉, System.Windows.Forms.Timer는 UI 스레드와 연동되어 간단한 UI 관련 작업에 적합하며, System.Threading.Timer는 UI와 독립적으로 백그라운드에서 주기적인 작업을 실행할 때 유용합니다.
- System.Windows.Forms.Timer:
UI 스레드의 메시지 루프를 통해 콜백되어 UI 업데이트와 관련된 작업에 적합합니다. - System.Threading.Timer:
.NET 스레드 풀의 작업(백그라운드) 스레드에서 콜백되므로, UI와 독립적으로 주기적인 작업을 처리할 수 있습니다. - System.Timers.Timer:
기본적으로는 System.Threading.Timer와 같이 백그라운드(스레드 풀) 스레드에서 Elapsed 이벤트를 발생
'Program Language > C# (GUI)' 카테고리의 다른 글
[C# WinForm] UI 스레드 (메인 스레드) 와 작업 스레드 (백그라운드 스레드) (0) | 2025.02.22 |
---|