UI 쓰레드가 바쁠때 UI 타이머 호출안되는 문제

윈폼으로 개발할때 UI 타이머(System.Windows.Forms.Timer)를 사용합니다.
예를 들어 1초마다 화면에 현재 시간을 표시하는 기능을 넣고 버튼을 하나 추가한 다음
버튼을 누르면 화면에 카운트를 증가해서 표시하는 기능을 넣습니다.
이 상태에서 버튼을 빠르게 연타하면 현재 시간이 갱신이 안되는 현상이 발생하더군요.
UI 쓰레드가 바빠지면서 UI 타이머 핸들러를 호출하지 못하는 현상같은데 역시나 해결방법은 없는것 같더군요.
혹시 이런 현상 겪어보신분 다른 해결방법이 있을까요?

1개의 좋아요

저는 System.Timers.Timer 선언해서 씁니다만,
UI Blocking 현상이 나오는 상황 자체를 만들지 않는게 최우선인 것 같습니다.
Main thread를 바쁘게 만드는 작업을 별도 Thread로 빼서 돌리는게 중요해보입니다.

8개의 좋아요

@CODE_REAPER 님 말씀처럼 Main Thread의 부담을 줄여주기 위해 @dimohy 님이 공유해주신 PeriodicTimer를 쓰기 적절한 사례가 아닐까 싶습니다~

7개의 좋아요

Quartz 쓰세용

1개의 좋아요