선생님 안녕하세요.
Winfrom, WPF에서 가끔 Thread.Sleep()을 사용하는 코드들을 보고 있습니다.
저는 아래와 같은 이유로 Winfrom, WPF에서는 분명한 이유가 없다면
Thread.Sleep()을 되도록 사용하지 않는 것이 좋다고 생각합니다.
① UI 스레드에서 Thread.Sleep()을 사용할 경우 UI Freeze를 발생한다.
② Thread.Sleep(5초)라면 5초 동안 쉬는 게 아니라 스레드 스케줄러에 5초 동안
제외되는 것이라서 개발자가 정확히 시간으로 제어할 수 없다.
③ System.Windows.Forms.Timer를 사용하는 경우 타이머의 Tick 이벤트가
Sleep 만큼 지연한다.
④ 만약 동기화 문제로 Thread.Sleep()을 사용했다면
C#에서는 lock, Monitor, Mutex, Semaphore 같은 동기화 도구를 제공한다.
[질문 ①] 언급한 4가지 중에 제가 틀린 부분이 있을까요?
[질문 ②] Thread.Sleep()을 반드시 사용해야만 하는 경우가 있을까요?
[질문 ③] 선생님은 보통 어떤 경우에 Thread.Sleep()을 사용하시나요?
[최초 등록일: ]
[최종 수정일: 9/14/2023]