티스토리 뷰

반응형

문제

작업 쓰레드에서 데이터를 빠른 속도로 반복해서 연속 처리할 때

그 쓰레드 내에 UI 컨트롤을 변경(Log 메시지 출력 등)하는 코드가 여기저기 있다면 폼이나 UI 컨트롤이 멈춰버리는 현상이 생긴다.

코드가 종료될 때까지 마우스, 키보드, 터치 조작이 불가능해진다.

 

원인

이는 UI 쓰레드에서 반복 실행하는 것과 같은 것이다.

Invoke나 BeginInvoke 상관없이 UI를 실시간으로 변경해버리면 중간에 사용자가 조작을 할 수가 없게 된다.

이것을 해결하려면 사용자가 UI를 조작할 틈을 내줘야 한다. 대신 처리속도는 그 만큼 늦어지게 된다.

 

해결

Thread.Sleep(1);

작업 Thread 코드 내에 위 코드를 추가해서 UI를 건드리는 작업 쓰레드를 일시정지 시켜야 사용자가 UI를 조작할 수 있다.

반응형
TAG
댓글
댓글쓰기 폼