본문 바로가기

Framework2

[C#/Winform] Timer 클래스를 사용하는 방법 주기적으로 특정 행위를 반복하는 배치 프로그램이나 에이전트 프로그램을 구현할 때,.NET의 Timer 클래스를 사용하면 편리하게 구현할 수 있다. 하지만 .NET에는 세 가지 Timer 클래스가 존재한다.System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer각각 사용 방법도 다르고, 동작하는 개념의 차이도 있다. 만약 Timer 객체를 사용하고자 할 때는, 동작 원리를 이해하고 상황에 맞추어 선택할 수 있어야 한다.1. Timer 클래스의 종류 및 동작 원리1.1 System.Windows.Forms.Timer WinForms UI 스레드에서 실행되는 타이머로, 주로 UI 업데이트가 필요한 경우 사용UI스레드에서 실행되므로, UI 컨트롤을.. 2025. 3. 25.
[C#/Winforms] "응답 없음 (Not Responding)" 을 해결하는 방법 Winforms은 UI 단일 스레드(Single Threaded Apartment, STA) 모델을 따른다. 즉, 모든 UI 관련 작업은 기본적으로 메인(UI) 스레드에서 실행된다는 뜻이다. 따라서, 시간이 오래걸리는 연산 (ex. 파일 I/O, 네트워크 요청, 복잡한 연산 등) 을 UI 스레드에서 직접 실행한다면 메시지 루프가 blocking 되어 "응답 없음 (Not Responding)" 상태가 발생할 수 있다.  본 글은 "응답 없음" 상태를 해결하는 방법에 대해서 소개한다.해결 방법은 크게 3가지로 볼 수 있다.  1. BackgroundWorkerBackgroundWorker 클래스를 사용하면 UI 스레드가 아닌 백그라운드 스레드에서 작업을 수행UI 업데이트가 필요할 경우 ProgressCha.. 2025. 2. 5.