내용 보기
작성자
관리자 (IP : 172.17.0.1)
날짜
2020-08-11 08:20
제목
[C#] modal dialog의 메세지 루프
Modal Dialog창을 띄웠을때 프로세스가 어떻게 동작되는지 간단한 설명이다. 메인 스레드에서 Modal Dialog창이 Show() 되면 내부적으로 기존 메인 메세지 루프의 메세지 펌핑작업이 일시중단 되고 새로운 메세지 루프 처리 작업을 만든다. (Application.RunDialog()) 새로운 스레드가 생성되는 것이 아닌 기존 Modal Dialog창을 호출했던 스레드에서 새로운 메세지 루프 작업이 생성된다. Modal Dialog창이 표시 되면 프로세스 내부에 해당 스택 순서는 다음과 같다.
메인 스레드의 메세지 루프를 단순화 시켜 코드로 보자면
이와 같은 로직이고, Modal Dialog창이 표시 될때 더이상 메세지를 Dispatch하지 않고, Modal Dialog창이 표시 되면서
이와 같은 형식이 된다. |
출처1
https://social.msdn.microsoft.com/Forums/vstudio/en-US/3f37a652-b558-4342-ade9-ad5ce68c9d01/why-does-showdialog-not-block-the-ui-thread-completely?forum=netfxbcl
출처2