ui thread 를 하나만 쓰도록 강제화 했다기 보단
위에 댓글 처럼 여러개 생성이 가능하듯…
왜 ui 접근을 해당 스레드에서만 처리가능하도록 강제했을지가 핵심 같습니다
(이것은 닷넷 뿐 아니라 mfc 심지어 안드로이드 os도 동일합니다)
그 이유는 윈도우 에서 ui로 실행되는 프로세스는
메세지루프를 갖게 됩니다
그런데 메세지루프 처리 구조가 복잡한데
만약 ui접근을 모든 스레드에서 가능하도록 열어두었다면 그
복잡한 처리구조 를 모두 고려한상태로 스레드처리가 되어야 하기때문에
일부러 강제로 막았나 싶습니다
3 Likes
엄밀히 WPF의 Rendering thread가 UI를 처리한다고 보면 안 됩니다. (UI 처리를 포함한) 모든 사용자 코드는 UI Thread에서 처리되고, UI Thread가 생성한 rendering command 정보를 WPF Application마다 하나씩 생성돼 있는 특별한 Rendering thread가 command를 수행해 실제 pixel로 변환하는 것입니다.
사실, rendering thread는 WPF 개발자 입장에서 전혀 관여할 수 없는 영역이어서 동기화라든가 하는 것들을 논의할 이유도 없습니다. 즉, 개발자 입장에서는 그냥 없다고 생각해도 무방하고 단지 성능이 좋아지는 혜택만 얻는다고 보면 됩니다.
6 Likes